Onlinestar Company Marketing Analysis Project¶

Exploring the data¶

Segment --> Customer segment¶

campaignstartdate --> tare5 bad2 el 7amla el tswekia (campaign)¶

campaignenddate --> tare5 entha2 el 7amla el tswekia (campaign)¶

3amod el campaignstartdate wel campaignenddatee h3rf menhom el duaration y3ni el modda eli fdelt feha el 7mla el tskewia (campaign) bt3ty 43'ala¶

campaign --> da esm el 7amla el tskewia (campaign)¶

progress --> el campaign progress bta3et el 7amla el tswekia (campaign)¶

STATUS --> da el campaign status¶

contacted --> de m3naha tam el twasol wla la2¶

conversion --> if 1 the contract was signed y3ni law 1 yeb2a el 3a2d etmda law 0 yeb2a la2 mtmda4¶

REJECTIONREASON --> shows why the dealer rejected the offer y3ni b3rf menha sbab rafd el 3amel lel offer¶

SELLID --> ClientID¶

ACCOUNTSTATUS --> shows current customer status y3ni 7alet el 3amel¶

Classified --> anwa3 el 3rbiat¶

Sub name --> eli bi3ber 3n no3 el 3rbya¶

Sub startdate --> contract start date y3ni tare5 bad2 el tfawod¶

Sub close date --> contract close date y3ni tare5 entha2 el tfawod¶

y3ni mslan law 3amod el Sub startdate kan 12/6/2024 we 3amod el Sub close date kan 20/6/2024 da m3nah en homa bd2o tfawod yom 12/6/2024 wel 3a2d etmada aw 7aslo cancelation aw aian kan 7alet el offer yom 20/6/2024 fa da m3nah enhom fedlo 8 aiam fel tfawod¶

CONTRACTSTATUS_M0 l7ad CONTRACTSTATUS_M12 --> da 7alet el 3a2d fe kol 4ahr men awel 4ahr wa7ed l7ad 4ahr 12 we da bi3rfny kam 3amel fedl mot3aked we kam 3amel fas5 el3a2d fe 4ahr mo3ian¶

LISTINGSM0 l7ad LISTINGSM14 --> da bi3rfny fe kam 3rbia mwgoda 3ndy fel entzar fel m3rad le modet 14 4ahr y3ni men awel el 4ahr el awel l7ad el 4ahr el 14 bel nesba le kol 3amel wa5ed meni franchise¶

Classified Rev M0 l7ad Classified Rev M14 --> el arba7 b3d el 5asm¶

Classified UndisRev M0 l7ad Classified UndisRev M14 --> el arba7 abl el 5asm¶
3amod el Classified Rev M0 we 3amod el Classified UndisRev M0 bi3rfony el 5asm nafso ad a fe kol 4ah¶

Data types¶

1- int64 --> y3ni rakmy sa7e7¶

2- float64 --> y3ni rakmy 3a4ry¶

3- object --> y3ni nusy¶

4- datetime64 --> y3ni tare5¶

import numpy as np --> de mktba btost5dam fe 3lom el bianat we btet2sem le klmten "Number" & "Python", fa hia btet3amel ma3 el arkam b4akl kber¶
import pandas as pd --> de mktba btost5dam lel3amol ma3 le bianat zy tandef el bianat (Cleaning Data) wel t3del 3al bianat (Data Manipulation ) we t7lel el bianat (Analysing data) we kman btost5dam fel Visualization bs mesh b4akl kway 34na keda lma hagy a3mel visualization hts5dem el mktba plotly.express.¶
import plotly.express as px --> de mktba btost5dam 34an a3rf arsem charts (Visualizations)¶
In [1]:
import numpy as np
import pandas as pd
import plotly.express as px

ana hena b3mel install lel mktba bta3et el tware5 wel w2t¶

In [2]:
pip install datetime
Requirement already satisfied: datetime in c:\users\mazen sabry\anaconda3\lib\site-packages (5.5)
Requirement already satisfied: zope.interface in c:\users\mazen sabry\anaconda3\lib\site-packages (from datetime) (5.4.0)
Requirement already satisfied: pytz in c:\users\mazen sabry\anaconda3\lib\site-packages (from datetime) (2023.3.post1)
Requirement already satisfied: setuptools in c:\users\mazen sabry\anaconda3\lib\site-packages (from zope.interface->datetime) (68.2.2)
Note: you may need to restart the kernel to use updated packages.

ana hena bstad3y mktbet el tware5 wel w2t eli ana lesa 3amelha install¶

In [3]:
import datetime as dt

ana hena 3amlt mot3'ier esmo data 7atet gwah el mlaf eli esmo "Cohort Tracking Campaign" eli gwa el excel sheet eli esmo "Onlinestar Company Marketing Analysis"¶

In [4]:
data=pd.read_excel("E:/E/Data Analysis Courses/Ahmed Ali Data Analysis Diploma/6- Python Sessions/Projects/41th Session/Onlinestar Company Marketing Analysis.xlsx",sheet_name='Cohort Tracking Campaign')
data
Out[4]:
SEGMENT campaignstartdate campaignenddate campaign progress STATUS contacted conversion cr2 basis REJECTIONREASON ... Classified Rev M10 Classified UndisRev M10 Classified Rev M11 Classified UndisRev M11 Classified Rev M12 Classified UndisRev M12 Classified Rev M13 Classified UndisRev M13 Classified Rev M14 Classified UndisRev M14
0 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 69.9 119.0 69.9 119.0 69.9 119.0 69.9 119.0 69.9 119.0
1 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 Small Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
3 Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 119.0 139.0 139.0 139.0 139.0 139.0 139.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Independent Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 Export Business ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 77 columns

info() : de function bt3rfny el data types eli mwgoda fe kol 3amod fa hena by2ol mslan en 3amod el SEGMENT feh 89823 saf non-null y3ni mesh fady we no3o object wel object da y3ni ay kema mesh 3dadeya y3ni text we 3amod el conversion feh 90159 saf non-null bardo y3ni mesh fady we no3o int64 wel int64 da y3ni kema 3dadeya laken law kan int32 yeb2a fady we kol 3wamed el tware5 eli homa campaignstartdate & campaignenddate & Sub close date & Sub startdate no3hhom datetime64 y3ni mzboten¶

In [5]:
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 90159 entries, 0 to 90158
Data columns (total 77 columns):
 #   Column                   Non-Null Count  Dtype         
---  ------                   --------------  -----         
 0   SEGMENT                  89823 non-null  object        
 1   campaignstartdate        90159 non-null  datetime64[ns]
 2   campaignenddate          90159 non-null  datetime64[ns]
 3   campaign                 90159 non-null  object        
 4   progress                 90159 non-null  object        
 5   STATUS                   90159 non-null  object        
 6   contacted                90159 non-null  int64         
 7   conversion               90159 non-null  int64         
 8   cr2 basis                90159 non-null  int64         
 9   REJECTIONREASON          41593 non-null  object        
 10  SELLID                   90159 non-null  int64         
 11  ACCOUNTSTATUS            90159 non-null  object        
 12  Classified               7016 non-null   object        
 13  Sub name                 7016 non-null   object        
 14  Sub close date           7012 non-null   datetime64[ns]
 15  Sub startdate            7016 non-null   datetime64[ns]
 16  CONTRACTSTATUS_M1        7020 non-null   float64       
 17  CONTRACTSTATUS_M2        7020 non-null   float64       
 18  CONTRACTSTATUS_M3        7020 non-null   float64       
 19  CONTRACTSTATUS_M4        7020 non-null   float64       
 20  CONTRACTSTATUS_M5        7020 non-null   float64       
 21  CONTRACTSTATUS_M6        7020 non-null   float64       
 22  CONTRACTSTATUS_M7        7020 non-null   float64       
 23  CONTRACTSTATUS_M8        7020 non-null   float64       
 24  CONTRACTSTATUS_M9        7020 non-null   float64       
 25  CONTRACTSTATUS_M10       7020 non-null   float64       
 26  CONTRACTSTATUS_M11       7020 non-null   float64       
 27  CONTRACTSTATUS_M12       7020 non-null   float64       
 28  LISTINGSM0               4751 non-null   float64       
 29  LISTINGSM1               5007 non-null   float64       
 30  LISTINGSM2               4691 non-null   float64       
 31  LISTINGSM3               4098 non-null   float64       
 32  LISTINGSM4               3626 non-null   float64       
 33  LISTINGSM5               3377 non-null   float64       
 34  LISTINGSM6               3078 non-null   float64       
 35  LISTINGSM7               2888 non-null   float64       
 36  LISTINGSM8               2708 non-null   float64       
 37  LISTINGSM9               2490 non-null   float64       
 38  LISTINGSM10              2120 non-null   float64       
 39  LISTINGSM11              1930 non-null   float64       
 40  LISTINGSM12              1754 non-null   float64       
 41  LISTINGSM13              1521 non-null   float64       
 42  LISTINGSM14              1354 non-null   float64       
 43  VEHICLES_YESTERDAY       10163 non-null  float64       
 44  VEHICLES_LAST7DAYS       10163 non-null  float64       
 45  AVG_VEHICLES_LAST_MONTH  10163 non-null  float64       
 46  AVG_VEHICLES_THIS_MONTH  10163 non-null  float64       
 47  Classified Rev M0        6763 non-null   float64       
 48  Classified UndisRev M0   6763 non-null   float64       
 49  Classified Rev M1        6230 non-null   float64       
 50  Classified UndisRev M1   6230 non-null   float64       
 51  Classified Rev M2        5596 non-null   float64       
 52  Classified UndisRev M2   5596 non-null   float64       
 53  Classified Rev M3        4806 non-null   float64       
 54  Classified UndisRev M3   4806 non-null   float64       
 55  Classified Rev M4        4180 non-null   float64       
 56  Classified UndisRev M4   4180 non-null   float64       
 57  Classified Rev M5        3782 non-null   float64       
 58  Classified UndisRev M5   3782 non-null   float64       
 59  Classified Rev M6        3378 non-null   float64       
 60  Classified UndisRev M6   3378 non-null   float64       
 61  Classified Rev M7        3123 non-null   float64       
 62  Classified UndisRev M7   3123 non-null   float64       
 63  Classified Rev M8        2893 non-null   float64       
 64  Classified UndisRev M8   2893 non-null   float64       
 65  Classified Rev M9        2637 non-null   float64       
 66  Classified UndisRev M9   2637 non-null   float64       
 67  Classified Rev M10       2242 non-null   float64       
 68  Classified UndisRev M10  2242 non-null   float64       
 69  Classified Rev M11       2052 non-null   float64       
 70  Classified UndisRev M11  2052 non-null   float64       
 71  Classified Rev M12       1852 non-null   float64       
 72  Classified UndisRev M12  1852 non-null   float64       
 73  Classified Rev M13       1654 non-null   float64       
 74  Classified UndisRev M13  1654 non-null   float64       
 75  Classified Rev M14       1485 non-null   float64       
 76  Classified UndisRev M14  1485 non-null   float64       
dtypes: datetime64[ns](4), float64(61), int64(4), object(8)
memory usage: 53.0+ MB

isnull().sum() : de function bst5dmha 34an ageb 3dad el nulls fe kol 3amod, fa higebli hena mslan 3amod el "Classified UndisRev M12" feh 88307 null we aslun 3dad el sfof fel gdwal el asli 90159 y3ni fe 1852 saf bs eli mesh fady y3ni mesh nulls fa MESH s7 eni a3mel drop lel nulls 34an h5ser talt terb3 el data bt3ty¶

In [6]:
data.isnull().sum()
Out[6]:
SEGMENT                      336
campaignstartdate              0
campaignenddate                0
campaign                       0
progress                       0
                           ...  
Classified UndisRev M12    88307
Classified Rev M13         88505
Classified UndisRev M13    88505
Classified Rev M14         88674
Classified UndisRev M14    88674
Length: 77, dtype: int64

ana hena 3amlt 3amod gded esmo Campaign_Duration feh el timedelta y3ni el fatra el zmnia ben tare5en y3ni hena el moda el fedlt feha el 7amla el e3lania bt3ty 43'ala fa tart7t 3amod entha2 el 7amal el e3lania men tare5 bad2 el 7amla el e3lania wel nateg hytla3 bel aiam¶

In [7]:
data['Campaign_Duration']=(data['campaignenddate']-data['campaignstartdate'])
data['Campaign_Duration']
Out[7]:
0       66 days
1       66 days
2       66 days
3       66 days
4       66 days
          ...  
90154   21 days
90155   21 days
90156   21 days
90157   21 days
90158   21 days
Name: Campaign_Duration, Length: 90159, dtype: timedelta64[ns]

ana hena est5demt el function info() 34an a4of el data type bta3 3amod el Campaign_Duration la2eto timedelta64 we da tabe3y gedan la2o nateg tar7 3amoden no3hom timedelta64¶

In [8]:
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 90159 entries, 0 to 90158
Data columns (total 78 columns):
 #   Column                   Non-Null Count  Dtype          
---  ------                   --------------  -----          
 0   SEGMENT                  89823 non-null  object         
 1   campaignstartdate        90159 non-null  datetime64[ns] 
 2   campaignenddate          90159 non-null  datetime64[ns] 
 3   campaign                 90159 non-null  object         
 4   progress                 90159 non-null  object         
 5   STATUS                   90159 non-null  object         
 6   contacted                90159 non-null  int64          
 7   conversion               90159 non-null  int64          
 8   cr2 basis                90159 non-null  int64          
 9   REJECTIONREASON          41593 non-null  object         
 10  SELLID                   90159 non-null  int64          
 11  ACCOUNTSTATUS            90159 non-null  object         
 12  Classified               7016 non-null   object         
 13  Sub name                 7016 non-null   object         
 14  Sub close date           7012 non-null   datetime64[ns] 
 15  Sub startdate            7016 non-null   datetime64[ns] 
 16  CONTRACTSTATUS_M1        7020 non-null   float64        
 17  CONTRACTSTATUS_M2        7020 non-null   float64        
 18  CONTRACTSTATUS_M3        7020 non-null   float64        
 19  CONTRACTSTATUS_M4        7020 non-null   float64        
 20  CONTRACTSTATUS_M5        7020 non-null   float64        
 21  CONTRACTSTATUS_M6        7020 non-null   float64        
 22  CONTRACTSTATUS_M7        7020 non-null   float64        
 23  CONTRACTSTATUS_M8        7020 non-null   float64        
 24  CONTRACTSTATUS_M9        7020 non-null   float64        
 25  CONTRACTSTATUS_M10       7020 non-null   float64        
 26  CONTRACTSTATUS_M11       7020 non-null   float64        
 27  CONTRACTSTATUS_M12       7020 non-null   float64        
 28  LISTINGSM0               4751 non-null   float64        
 29  LISTINGSM1               5007 non-null   float64        
 30  LISTINGSM2               4691 non-null   float64        
 31  LISTINGSM3               4098 non-null   float64        
 32  LISTINGSM4               3626 non-null   float64        
 33  LISTINGSM5               3377 non-null   float64        
 34  LISTINGSM6               3078 non-null   float64        
 35  LISTINGSM7               2888 non-null   float64        
 36  LISTINGSM8               2708 non-null   float64        
 37  LISTINGSM9               2490 non-null   float64        
 38  LISTINGSM10              2120 non-null   float64        
 39  LISTINGSM11              1930 non-null   float64        
 40  LISTINGSM12              1754 non-null   float64        
 41  LISTINGSM13              1521 non-null   float64        
 42  LISTINGSM14              1354 non-null   float64        
 43  VEHICLES_YESTERDAY       10163 non-null  float64        
 44  VEHICLES_LAST7DAYS       10163 non-null  float64        
 45  AVG_VEHICLES_LAST_MONTH  10163 non-null  float64        
 46  AVG_VEHICLES_THIS_MONTH  10163 non-null  float64        
 47  Classified Rev M0        6763 non-null   float64        
 48  Classified UndisRev M0   6763 non-null   float64        
 49  Classified Rev M1        6230 non-null   float64        
 50  Classified UndisRev M1   6230 non-null   float64        
 51  Classified Rev M2        5596 non-null   float64        
 52  Classified UndisRev M2   5596 non-null   float64        
 53  Classified Rev M3        4806 non-null   float64        
 54  Classified UndisRev M3   4806 non-null   float64        
 55  Classified Rev M4        4180 non-null   float64        
 56  Classified UndisRev M4   4180 non-null   float64        
 57  Classified Rev M5        3782 non-null   float64        
 58  Classified UndisRev M5   3782 non-null   float64        
 59  Classified Rev M6        3378 non-null   float64        
 60  Classified UndisRev M6   3378 non-null   float64        
 61  Classified Rev M7        3123 non-null   float64        
 62  Classified UndisRev M7   3123 non-null   float64        
 63  Classified Rev M8        2893 non-null   float64        
 64  Classified UndisRev M8   2893 non-null   float64        
 65  Classified Rev M9        2637 non-null   float64        
 66  Classified UndisRev M9   2637 non-null   float64        
 67  Classified Rev M10       2242 non-null   float64        
 68  Classified UndisRev M10  2242 non-null   float64        
 69  Classified Rev M11       2052 non-null   float64        
 70  Classified UndisRev M11  2052 non-null   float64        
 71  Classified Rev M12       1852 non-null   float64        
 72  Classified UndisRev M12  1852 non-null   float64        
 73  Classified Rev M13       1654 non-null   float64        
 74  Classified UndisRev M13  1654 non-null   float64        
 75  Classified Rev M14       1485 non-null   float64        
 76  Classified UndisRev M14  1485 non-null   float64        
 77  Campaign_Duration        90159 non-null  timedelta64[ns]
dtypes: datetime64[ns](4), float64(61), int64(4), object(8), timedelta64[ns](1)
memory usage: 53.7+ MB

dt.days --> de btemsa7 ay nus fel 3amod we btseb el rakm bs we bet5ali no3 el 3amod numeric y3ni rakmy akeni 3amlt keda .astype(int64)¶

In [9]:
data['Campaign_Duration']=(data['campaignenddate']-data['campaignstartdate']).dt.days
data['Campaign_Duration']
Out[9]:
0        66
1        66
2        66
3        66
4        66
         ..
90154    21
90155    21
90156    21
90157    21
90158    21
Name: Campaign_Duration, Length: 90159, dtype: int64

ana hena est5demt el function info() 34an a4of el data type bta3 3amod el Campaign_Duration la2eto f3lan b2a numeric y3ni rakmi¶

In [10]:
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 90159 entries, 0 to 90158
Data columns (total 78 columns):
 #   Column                   Non-Null Count  Dtype         
---  ------                   --------------  -----         
 0   SEGMENT                  89823 non-null  object        
 1   campaignstartdate        90159 non-null  datetime64[ns]
 2   campaignenddate          90159 non-null  datetime64[ns]
 3   campaign                 90159 non-null  object        
 4   progress                 90159 non-null  object        
 5   STATUS                   90159 non-null  object        
 6   contacted                90159 non-null  int64         
 7   conversion               90159 non-null  int64         
 8   cr2 basis                90159 non-null  int64         
 9   REJECTIONREASON          41593 non-null  object        
 10  SELLID                   90159 non-null  int64         
 11  ACCOUNTSTATUS            90159 non-null  object        
 12  Classified               7016 non-null   object        
 13  Sub name                 7016 non-null   object        
 14  Sub close date           7012 non-null   datetime64[ns]
 15  Sub startdate            7016 non-null   datetime64[ns]
 16  CONTRACTSTATUS_M1        7020 non-null   float64       
 17  CONTRACTSTATUS_M2        7020 non-null   float64       
 18  CONTRACTSTATUS_M3        7020 non-null   float64       
 19  CONTRACTSTATUS_M4        7020 non-null   float64       
 20  CONTRACTSTATUS_M5        7020 non-null   float64       
 21  CONTRACTSTATUS_M6        7020 non-null   float64       
 22  CONTRACTSTATUS_M7        7020 non-null   float64       
 23  CONTRACTSTATUS_M8        7020 non-null   float64       
 24  CONTRACTSTATUS_M9        7020 non-null   float64       
 25  CONTRACTSTATUS_M10       7020 non-null   float64       
 26  CONTRACTSTATUS_M11       7020 non-null   float64       
 27  CONTRACTSTATUS_M12       7020 non-null   float64       
 28  LISTINGSM0               4751 non-null   float64       
 29  LISTINGSM1               5007 non-null   float64       
 30  LISTINGSM2               4691 non-null   float64       
 31  LISTINGSM3               4098 non-null   float64       
 32  LISTINGSM4               3626 non-null   float64       
 33  LISTINGSM5               3377 non-null   float64       
 34  LISTINGSM6               3078 non-null   float64       
 35  LISTINGSM7               2888 non-null   float64       
 36  LISTINGSM8               2708 non-null   float64       
 37  LISTINGSM9               2490 non-null   float64       
 38  LISTINGSM10              2120 non-null   float64       
 39  LISTINGSM11              1930 non-null   float64       
 40  LISTINGSM12              1754 non-null   float64       
 41  LISTINGSM13              1521 non-null   float64       
 42  LISTINGSM14              1354 non-null   float64       
 43  VEHICLES_YESTERDAY       10163 non-null  float64       
 44  VEHICLES_LAST7DAYS       10163 non-null  float64       
 45  AVG_VEHICLES_LAST_MONTH  10163 non-null  float64       
 46  AVG_VEHICLES_THIS_MONTH  10163 non-null  float64       
 47  Classified Rev M0        6763 non-null   float64       
 48  Classified UndisRev M0   6763 non-null   float64       
 49  Classified Rev M1        6230 non-null   float64       
 50  Classified UndisRev M1   6230 non-null   float64       
 51  Classified Rev M2        5596 non-null   float64       
 52  Classified UndisRev M2   5596 non-null   float64       
 53  Classified Rev M3        4806 non-null   float64       
 54  Classified UndisRev M3   4806 non-null   float64       
 55  Classified Rev M4        4180 non-null   float64       
 56  Classified UndisRev M4   4180 non-null   float64       
 57  Classified Rev M5        3782 non-null   float64       
 58  Classified UndisRev M5   3782 non-null   float64       
 59  Classified Rev M6        3378 non-null   float64       
 60  Classified UndisRev M6   3378 non-null   float64       
 61  Classified Rev M7        3123 non-null   float64       
 62  Classified UndisRev M7   3123 non-null   float64       
 63  Classified Rev M8        2893 non-null   float64       
 64  Classified UndisRev M8   2893 non-null   float64       
 65  Classified Rev M9        2637 non-null   float64       
 66  Classified UndisRev M9   2637 non-null   float64       
 67  Classified Rev M10       2242 non-null   float64       
 68  Classified UndisRev M10  2242 non-null   float64       
 69  Classified Rev M11       2052 non-null   float64       
 70  Classified UndisRev M11  2052 non-null   float64       
 71  Classified Rev M12       1852 non-null   float64       
 72  Classified UndisRev M12  1852 non-null   float64       
 73  Classified Rev M13       1654 non-null   float64       
 74  Classified UndisRev M13  1654 non-null   float64       
 75  Classified Rev M14       1485 non-null   float64       
 76  Classified UndisRev M14  1485 non-null   float64       
 77  Campaign_Duration        90159 non-null  int64         
dtypes: datetime64[ns](4), float64(61), int64(5), object(8)
memory usage: 53.7+ MB

ana hena tab3t el mot3'ier data 34an a4of f3lan el 3amod el gded bta3 el Campaign_Duration et3aml wla la2 hla2eh f3lan mwgod fel 2a5er¶

In [11]:
data
Out[11]:
SEGMENT campaignstartdate campaignenddate campaign progress STATUS contacted conversion cr2 basis REJECTIONREASON ... Classified UndisRev M10 Classified Rev M11 Classified UndisRev M11 Classified Rev M12 Classified UndisRev M12 Classified Rev M13 Classified UndisRev M13 Classified Rev M14 Classified UndisRev M14 Campaign_Duration
0 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 69.9 119.0 69.9 119.0 69.9 119.0 69.9 119.0 66
1 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 66
2 Small Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 66
3 Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 66
4 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 139.0 139.0 139.0 139.0 139.0 139.0 66
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21
90155 Independent Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21
90156 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21
90157 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21
90158 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 Export Business ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21

90159 rows × 78 columns

1- What are the top 15 campaign duo to duaration ?¶

ana hena 3awez ageb akber 15 7mla e3lana mn 7es el moda el e3lania y3ni men 7es el duaration fa el mnteki eni hst5dem el function nlargest le 3amod el Campaign_Duration eli ana gebto eli hwa kan nateg tar7 3amod el campaignenddate men 3amod el campaignstartdate bs lma 3amlt keda l2et en fe 7mlat e3lania mokrara fa el s7 eni ageb el unique bt3hom fa hst5dem el function groupby ma3 el function sum() le 3amod el campaign ma3 3amod el Campaign_Duration¶

nlargest() : de function bst5demha law 3awez ageb akber 3dad mo3ian men 3amod mo3ian we de bta5od parameter wa7ed eli hwa el3dad eli 3wzo aw bta5od 2 parameters awel parameter el 3dad we tany parameter esm el 3amod eli 3awez ageb meno akber 3dad¶

nlargest(15,'Campaign_Duration') : hena ba2olo hatli akber 15 ftrat fedlet feha el 7amal el e3lania bt3ty 43'ala bs law get rkezt keda hla2y en fehom campaign kter mokraren fa ana keda magebt4 akber 15 ana gebt akber 3 fa hst5dem el groupby 34an ageb el data eli ana 3awezha bdon tekrar y3ni unique¶

In [12]:
data.nlargest(15,'Campaign_Duration')
Out[12]:
SEGMENT campaignstartdate campaignenddate campaign progress STATUS contacted conversion cr2 basis REJECTIONREASON ... Classified UndisRev M10 Classified Rev M11 Classified UndisRev M11 Classified Rev M12 Classified UndisRev M12 Classified Rev M13 Classified UndisRev M13 Classified Rev M14 Classified UndisRev M14 Campaign_Duration
27171 Bull Accounts 2020-06-29 2021-07-10 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 untouched To Be Handled 0 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 376
83788 Independent Dealers 2021-01-04 2021-12-31 Web Registration_DE_VM_2021 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 361
83789 Independent Dealers 2021-01-04 2021-12-31 Web Registration_DE_VM_2021 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 361
83790 Independent Dealers 2021-01-04 2021-12-31 Web Registration_DE_VM_2021 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 361
83791 Independent Dealers 2021-01-04 2021-12-31 Web Registration_DE_VM_2021 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 361
28568 Franchised Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 82.0 NaN NaN NaN NaN NaN NaN NaN NaN 128
28569 Large Independent Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 134.0 130.0 130.0 128.0 128.0 NaN NaN NaN NaN 128
28570 Franchised Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 No Interest ... 122.0 NaN NaN NaN NaN NaN NaN NaN NaN 128
28571 Franchised Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 166.0 NaN NaN NaN NaN NaN NaN NaN NaN 128
28572 Large Independent Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 294.0 294.0 294.0 274.0 274.0 NaN NaN NaN NaN 128
28573 NaN 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 0.0 NaN NaN NaN NaN NaN NaN NaN NaN 128
28574 Franchised Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 146.0 NaN NaN NaN NaN NaN NaN NaN NaN 128
28575 OTP Optimizers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 50.0 NaN NaN NaN NaN NaN NaN NaN NaN 128
28576 OTP Optimizers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 128
28577 Large Independent Dealers 2020-10-26 2021-03-03 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 3 completed Offer Signed 1 1 1 NaN ... 202.0 198.0 198.0 208.0 208.0 NaN NaN NaN NaN 128

15 rows × 78 columns

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

AWEL TARE2A : 34an ageb akber 15 modad e3lania bdon tekrar y3ni akber 15 men 3amod el Campaign_Duration bdon tekrar 3amlt mot3'ier esmo Top15 7atet gwah mgmo3 kiam 3amod el Campaign_Duration ma3 3amod el campaign bst5dam el groupby ma3 el function max() b3d keda ast5demt el function nlargest() we 7atet gwaha 15 fa gabli akber 15¶

max() : de btgeb mgmo3 el kiam we lma bst5demha ma3 el groupby btgebli mgmo3 el kiam bdon tekrar¶

nlargest() : de bst5demha law 3awez ageb akber 3dad mo3ian men 3amod mo3ian¶

In [13]:
Top15=data['Campaign_Duration'].groupby(data['campaign']).max()
Top15
Out[13]:
campaign
BKD_DE_VM_2008_Akquise                                    66
BKD_DE_VM_2009_Akquise                                    45
BKD_DE_VM_2010_Akquise                                    48
BKD_DE_VM_2010_Test_Samstag                               26
BKD_DE_VM_2011_Akquise                                    49
                                                          ..
Webhelp_DE_VM_2107_RMS Attack Schotterplatz Aquisition    27
Webhelp_DE_VM_2108_RMS Attack Independent Aquisition      21
Webhelp_DE_VM_2108_RMS Attack Independent Follow-up       21
Webhelp_DE_VM_2108_RMS Attack Schotterplatz Aquisition    21
Webhelp_DE_VM_2108_RMS Attack Schotterplatz Follow-up     21
Name: Campaign_Duration, Length: 197, dtype: int64
In [14]:
Top15=data.groupby('campaign')['Campaign_Duration'].max().nlargest(15)
Top15
Out[14]:
campaign
KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE           376
Web Registration_DE_VM_2021                   361
KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0    128
TS_DE_VM_1909_Akquise_KW39-40                  98
TS_DE_VM_2007_Akquise                          93
TS_DE_VM_1912_Akquise_KW51                     92
TS_DE_VM_1907_Akquise_KW27                     91
TS_DE_VM_2001_Akquise_KW2                      88
TS_DE_VM_1910_Akquise_KW41                     85
TS_DE_VM_1907_Akquise_KW28                     84
TS_DE_VM_2005_Akquise                          83
KAM_DE_VM_2008_Vollgas mit AutoScout24         81
TS_DE_VM_2007_Divide&Conquer_BW                81
TS_DE_VM_1910_Akquise_KW42                     78
TS_DE_VM_2001_Akquise_KW3                      78
Name: Campaign_Duration, dtype: int64

TANY TARE2A : 34an ageb akber 16 modad e3lania bdon tekrar y3ni akber 16 men 3amod el Campaign_Duration bdon tekrar 3amlt mot3'ier esmo Top16 7atet gwah mgmo3 kiam 3amod el Campaign_Duration ma3 3amod el campaign bst5dam el function groupby ma3 el function max() b3d keda 7atethom fe gdwal bst5dam el function reset_index() b3d keda rtebthom tnazoli men 7es 3amod el Campaign_Duration bst5dam el function sort_values() b3d keda gebt awel 16 bst5dam el function head()¶

max() : de btgeb mgmo3 el kiam we lma bst5demha ma3 el groupby btgebli mgmo3 el kiam bdon tekrar¶

reset_index() : de debd5al el data gwa gdwal¶

sort_values(by='esm el3amod',ascending=True) : de betrteb 3amod mo3ian tsa3ody law True we tnazoli law False laken mafe4 descending higebli error y3ni law 3awez artebo tnazoli h3mel ascending=False¶

head() : de btgeb awel 3dad mo3ian men el sfof y3ni law 2oltelo head(16) higeb awel 16 saf bs men el gadwal¶

In [15]:
Top16=data['Campaign_Duration'].groupby(data['campaign']).max().reset_index().sort_values(by='Campaign_Duration',ascending=False).head(16)
Top16
Out[15]:
campaign Campaign_Duration
47 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 376
186 Web Registration_DE_VM_2021 361
52 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 128
98 TS_DE_VM_1909_Akquise_KW39-40 98
129 TS_DE_VM_2007_Akquise 93
110 TS_DE_VM_1912_Akquise_KW51 92
84 TS_DE_VM_1907_Akquise_KW27 91
111 TS_DE_VM_2001_Akquise_KW2 88
99 TS_DE_VM_1910_Akquise_KW41 85
85 TS_DE_VM_1907_Akquise_KW28 84
127 TS_DE_VM_2005_Akquise 83
130 TS_DE_VM_2007_Divide&Conquer_BW 81
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 81
112 TS_DE_VM_2001_Akquise_KW3 78
100 TS_DE_VM_1910_Akquise_KW42 78
131 TS_DE_VM_2007_Divide&Conquer_München 77
In [16]:
Top16=data.groupby('campaign')['Campaign_Duration'].max().reset_index().sort_values(by='Campaign_Duration',ascending=False).head(16)
Top16
Out[16]:
campaign Campaign_Duration
47 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 376
186 Web Registration_DE_VM_2021 361
52 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 128
98 TS_DE_VM_1909_Akquise_KW39-40 98
129 TS_DE_VM_2007_Akquise 93
110 TS_DE_VM_1912_Akquise_KW51 92
84 TS_DE_VM_1907_Akquise_KW27 91
111 TS_DE_VM_2001_Akquise_KW2 88
99 TS_DE_VM_1910_Akquise_KW41 85
85 TS_DE_VM_1907_Akquise_KW28 84
127 TS_DE_VM_2005_Akquise 83
130 TS_DE_VM_2007_Divide&Conquer_BW 81
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 81
112 TS_DE_VM_2001_Akquise_KW3 78
100 TS_DE_VM_1910_Akquise_KW42 78
131 TS_DE_VM_2007_Divide&Conquer_München 77

ana hena est5demt el function info() 34an a4of el data type bta3 3amod el Campaign_Duration la2eto int64 y3ni numeric mzbot 34an ana 2a5er function mnfezha 3aleh kanet el dt.days eli btemsa7 ay nus fel 3amod we btseb el rakm bs akeni 3amlt keda .astype(int64)¶

In [17]:
Top16.info()
<class 'pandas.core.frame.DataFrame'>
Index: 16 entries, 47 to 131
Data columns (total 2 columns):
 #   Column             Non-Null Count  Dtype 
---  ------             --------------  ----- 
 0   campaign           16 non-null     object
 1   Campaign_Duration  16 non-null     int64 
dtypes: int64(1), object(1)
memory usage: 384.0+ bytes

ana hena rasmt column bar chart lel mot3'ier Top16 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Campaign_Duration we 5alet 3ard el chart 1300 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "Top 15 campaign duo to duaration"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh Top 15 campaign duo to duarationt¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1300¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [18]:
px.bar(Top16,x='campaign',y='Campaign_Duration',text_auto='.2s',width=1300,height=600,title='Top 15 campaign duo to duaration')

TANY: ana hena 3amlt 3amod gded esmo Campaign_Duration feh el timedelta y3ni el fatra el zmnia ben tare5en y3ni hena el moda el fedlt feha el 7amla el e3lania bt3ty 43'ala fa tart7t 3amod entha2 el 7amal el e3lania men tare5 bad2 el 7amla el e3lania wel nateg hytla3 bel aiam¶

In [19]:
data['Campaign_Duration']=(data['campaignenddate']-data['campaignstartdate'])
data['Campaign_Duration']
Out[19]:
0       66 days
1       66 days
2       66 days
3       66 days
4       66 days
          ...  
90154   21 days
90155   21 days
90156   21 days
90157   21 days
90158   21 days
Name: Campaign_Duration, Length: 90159, dtype: timedelta64[ns]

ana hena est5demt el function info() 34an a4of el data type bta3 3amod el Campaign_Duration b3d mtr7t 3amod entha2 el 7amla men 3amod bad2 el 7amla la2eto tabe3y timedelta64¶

In [20]:
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 90159 entries, 0 to 90158
Data columns (total 78 columns):
 #   Column                   Non-Null Count  Dtype          
---  ------                   --------------  -----          
 0   SEGMENT                  89823 non-null  object         
 1   campaignstartdate        90159 non-null  datetime64[ns] 
 2   campaignenddate          90159 non-null  datetime64[ns] 
 3   campaign                 90159 non-null  object         
 4   progress                 90159 non-null  object         
 5   STATUS                   90159 non-null  object         
 6   contacted                90159 non-null  int64          
 7   conversion               90159 non-null  int64          
 8   cr2 basis                90159 non-null  int64          
 9   REJECTIONREASON          41593 non-null  object         
 10  SELLID                   90159 non-null  int64          
 11  ACCOUNTSTATUS            90159 non-null  object         
 12  Classified               7016 non-null   object         
 13  Sub name                 7016 non-null   object         
 14  Sub close date           7012 non-null   datetime64[ns] 
 15  Sub startdate            7016 non-null   datetime64[ns] 
 16  CONTRACTSTATUS_M1        7020 non-null   float64        
 17  CONTRACTSTATUS_M2        7020 non-null   float64        
 18  CONTRACTSTATUS_M3        7020 non-null   float64        
 19  CONTRACTSTATUS_M4        7020 non-null   float64        
 20  CONTRACTSTATUS_M5        7020 non-null   float64        
 21  CONTRACTSTATUS_M6        7020 non-null   float64        
 22  CONTRACTSTATUS_M7        7020 non-null   float64        
 23  CONTRACTSTATUS_M8        7020 non-null   float64        
 24  CONTRACTSTATUS_M9        7020 non-null   float64        
 25  CONTRACTSTATUS_M10       7020 non-null   float64        
 26  CONTRACTSTATUS_M11       7020 non-null   float64        
 27  CONTRACTSTATUS_M12       7020 non-null   float64        
 28  LISTINGSM0               4751 non-null   float64        
 29  LISTINGSM1               5007 non-null   float64        
 30  LISTINGSM2               4691 non-null   float64        
 31  LISTINGSM3               4098 non-null   float64        
 32  LISTINGSM4               3626 non-null   float64        
 33  LISTINGSM5               3377 non-null   float64        
 34  LISTINGSM6               3078 non-null   float64        
 35  LISTINGSM7               2888 non-null   float64        
 36  LISTINGSM8               2708 non-null   float64        
 37  LISTINGSM9               2490 non-null   float64        
 38  LISTINGSM10              2120 non-null   float64        
 39  LISTINGSM11              1930 non-null   float64        
 40  LISTINGSM12              1754 non-null   float64        
 41  LISTINGSM13              1521 non-null   float64        
 42  LISTINGSM14              1354 non-null   float64        
 43  VEHICLES_YESTERDAY       10163 non-null  float64        
 44  VEHICLES_LAST7DAYS       10163 non-null  float64        
 45  AVG_VEHICLES_LAST_MONTH  10163 non-null  float64        
 46  AVG_VEHICLES_THIS_MONTH  10163 non-null  float64        
 47  Classified Rev M0        6763 non-null   float64        
 48  Classified UndisRev M0   6763 non-null   float64        
 49  Classified Rev M1        6230 non-null   float64        
 50  Classified UndisRev M1   6230 non-null   float64        
 51  Classified Rev M2        5596 non-null   float64        
 52  Classified UndisRev M2   5596 non-null   float64        
 53  Classified Rev M3        4806 non-null   float64        
 54  Classified UndisRev M3   4806 non-null   float64        
 55  Classified Rev M4        4180 non-null   float64        
 56  Classified UndisRev M4   4180 non-null   float64        
 57  Classified Rev M5        3782 non-null   float64        
 58  Classified UndisRev M5   3782 non-null   float64        
 59  Classified Rev M6        3378 non-null   float64        
 60  Classified UndisRev M6   3378 non-null   float64        
 61  Classified Rev M7        3123 non-null   float64        
 62  Classified UndisRev M7   3123 non-null   float64        
 63  Classified Rev M8        2893 non-null   float64        
 64  Classified UndisRev M8   2893 non-null   float64        
 65  Classified Rev M9        2637 non-null   float64        
 66  Classified UndisRev M9   2637 non-null   float64        
 67  Classified Rev M10       2242 non-null   float64        
 68  Classified UndisRev M10  2242 non-null   float64        
 69  Classified Rev M11       2052 non-null   float64        
 70  Classified UndisRev M11  2052 non-null   float64        
 71  Classified Rev M12       1852 non-null   float64        
 72  Classified UndisRev M12  1852 non-null   float64        
 73  Classified Rev M13       1654 non-null   float64        
 74  Classified UndisRev M13  1654 non-null   float64        
 75  Classified Rev M14       1485 non-null   float64        
 76  Classified UndisRev M14  1485 non-null   float64        
 77  Campaign_Duration        90159 non-null  timedelta64[ns]
dtypes: datetime64[ns](4), float64(61), int64(4), object(8), timedelta64[ns](1)
memory usage: 53.7+ MB

(lel tgroba est5demt TANY TARE2A tany 34an asbet en el chart mesh hib2a mzbot 3'er lma a7wel el 3amod numeric we ams7 meno ay nus) : 34an ageb akber 17 modad e3lania bdon tekrar y3ni akber 17 men 3amod el Campaign_Duration bdon tekrar 3amlt mot3'ier esmo Top17 7atet gwah mgmo3 kiam 3amod el Campaign_Duration ma3 3amod el campaign bst5dam el function groupby ma3 el function max() b3d keda 7atethom fe gdwal bst5dam el function reset_index() b3d keda rtebthom tnazoli men 7es 3amod el Campaign_Duration bst5dam el function sort_values b3d keda gebt awel 17 bst5dam el function head¶

max() : de btgeb akber kema¶

reset_index() : de debd5al el data gwa gdwal¶

sort_values(by='esm el3amod',ascending=True) : de betrteb 3amod mo3ian tsa3ody law True we tnazoli law False laken mafe4 descending higebli error y3ni law 3awez artebo tnazoli h3mel ascending=False¶

head() :de btgeb awel 3dad mo3ian men el sfof y3ni law 2oltelo head(16) higeb awel 16 saf bs men el gadwal¶

In [21]:
Top17=data['Campaign_Duration'].groupby(data['campaign']).max().reset_index().sort_values(by='Campaign_Duration',ascending=False).head(17)
Top17
Out[21]:
campaign Campaign_Duration
47 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 376 days
186 Web Registration_DE_VM_2021 361 days
52 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 128 days
98 TS_DE_VM_1909_Akquise_KW39-40 98 days
129 TS_DE_VM_2007_Akquise 93 days
110 TS_DE_VM_1912_Akquise_KW51 92 days
84 TS_DE_VM_1907_Akquise_KW27 91 days
111 TS_DE_VM_2001_Akquise_KW2 88 days
99 TS_DE_VM_1910_Akquise_KW41 85 days
85 TS_DE_VM_1907_Akquise_KW28 84 days
127 TS_DE_VM_2005_Akquise 83 days
130 TS_DE_VM_2007_Divide&Conquer_BW 81 days
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 81 days
112 TS_DE_VM_2001_Akquise_KW3 78 days
100 TS_DE_VM_1910_Akquise_KW42 78 days
131 TS_DE_VM_2007_Divide&Conquer_München 77 days
86 TS_DE_VM_1907_Akquise_KW29 77 days

ana hena est5demt el function info() 34an a4of el data type bta3 3amod el Campaign_Duration la2eto tabe3y timedelta64¶

In [22]:
Top17.info()
<class 'pandas.core.frame.DataFrame'>
Index: 17 entries, 47 to 86
Data columns (total 2 columns):
 #   Column             Non-Null Count  Dtype          
---  ------             --------------  -----          
 0   campaign           17 non-null     object         
 1   Campaign_Duration  17 non-null     timedelta64[ns]
dtypes: object(1), timedelta64[ns](1)
memory usage: 408.0+ bytes

ana hena rasmt column bar chart lel mot3'ier Top17 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod eli elmafrod ykon rakmy bs hwa timedelta64 eli hwa Campaign_Duration we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "Top 15 campaign duo to duaration" --> bs zy mna 4aief keda hla2y en el chart mesh mrsom mzbot!!¶

In [23]:
px.bar(Top17,x='campaign',y='Campaign_Duration',text_auto='.2s',width=1200,height=600,title='Top 17 campaign duo to duaration')

34an keda hadtar a5ali 3amod el Campaign_Duration nusy 34an ams7 meno klmet days b3d keda awe7lo rakmi tany 34an a3rf arsemo¶

astype(str) : de bet7wel el datatype bta3el 3amod le string¶

b3d keda 3amlt Top17.info() 34an at2ked en 3amod el Campaign_Duration et7wel le string eli hwa hena object¶

In [24]:
Top17['Campaign_Duration']=Top17['Campaign_Duration'].astype(str)
Top17.info()
<class 'pandas.core.frame.DataFrame'>
Index: 17 entries, 47 to 86
Data columns (total 2 columns):
 #   Column             Non-Null Count  Dtype 
---  ------             --------------  ----- 
 0   campaign           17 non-null     object
 1   Campaign_Duration  17 non-null     object
dtypes: object(2)
memory usage: 408.0+ bytes

str.split() : de btefsel 3n tare2 el 7aga eli gwa el akwas y3ni law 2olt str.split(' ') fa hifsel 3n tare2 el msafa we law 2olt str.split('/') hifsel 3n tare2 el 4arta el maila de we hakza¶

str.get() : de m3naha hatli rakm el index eli gwa el akwas y3ni law 2olt str.get(0) fa higebli awel index eli rakmo 0 we law 2olt str.get(1) higebli tany index eli rakmo 1 we hakza¶

str.split(' ').str.get(0) : hena hifsel 3n tare2 el msafa we higebli eli rakm el index bta3o 0 fa gabli el arkam bs we mas7 klmet days¶

ana hena 5alet 3amod el Campaign_Duration eli fel mot3'ier Top17 y3red el arkam bs 3ntare2 eni faslt el arkam 3n klmet days bst5dam el function str.split(' ') we 3radt eli el index bta3o 0 bst5dam el function str.get(0)¶

In [25]:
Top17['Campaign_Duration']=Top17['Campaign_Duration'].str.split(' ').str.get(0)
Top17
Out[25]:
campaign Campaign_Duration
47 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 376
186 Web Registration_DE_VM_2021 361
52 KAM_DE_VM_2011_Vollgas mit AutoScout24 2.0 128
98 TS_DE_VM_1909_Akquise_KW39-40 98
129 TS_DE_VM_2007_Akquise 93
110 TS_DE_VM_1912_Akquise_KW51 92
84 TS_DE_VM_1907_Akquise_KW27 91
111 TS_DE_VM_2001_Akquise_KW2 88
99 TS_DE_VM_1910_Akquise_KW41 85
85 TS_DE_VM_1907_Akquise_KW28 84
127 TS_DE_VM_2005_Akquise 83
130 TS_DE_VM_2007_Divide&Conquer_BW 81
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 81
112 TS_DE_VM_2001_Akquise_KW3 78
100 TS_DE_VM_1910_Akquise_KW42 78
131 TS_DE_VM_2007_Divide&Conquer_München 77
86 TS_DE_VM_1907_Akquise_KW29 77

astype(int64) : de bet7wel el datatype bta3el 3amod le numeric¶

info() : de function bt3rfny el data types eli mwgoda fe kol 3amod¶

ana hena 7welt 3amod el Campaign_Duration le numeric 34an b3d keda lma agy arsemo ytrsem mazbot 34an el charts bta5od fel x nus wel fel y numeric fa kan lazem a7wel el y eli hwa hena 3amod el Campaign_Duration le numeric b3d keda ast5demt el function info() 34an at2ked en 3amod el Campaign_Duration et7wel le numeric mzbot¶

In [26]:
Top17['Campaign_Duration']=Top17['Campaign_Duration'].astype('int64')
Top17.info()
<class 'pandas.core.frame.DataFrame'>
Index: 17 entries, 47 to 86
Data columns (total 2 columns):
 #   Column             Non-Null Count  Dtype 
---  ------             --------------  ----- 
 0   campaign           17 non-null     object
 1   Campaign_Duration  17 non-null     int64 
dtypes: int64(1), object(1)
memory usage: 408.0+ bytes

ana hena rasmt column bar chart lel mot3'ier Top16 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Campaign_Duration we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "Top 17 campaign duo to duaration" we hla2y eno etrsm mzboot!¶

In [27]:
px.bar(Top17,x='campaign',y='Campaign_Duration',text_auto='.2s',width=1200,height=600,title='Top 17 campaign duo to duaration')

2- Define all the customers segmentations ?¶

ana hena 3awez a3rf 3ndy kam 4are7a fa el matenki eni hageb el 4raye7 bdon tekrar fa hst5dem el function unique() le 3amod el SEGMENT¶

unique() : de function bst5dmha 34ana ageb beha el kiam el fareda y3ni eli mesh metkrara fe 3AMOD WA7ED BS¶

nunique() : de function bst5dmha 34ana ageb beha el kiam el fareda y3ni eli mesh metkrara fe 3AMOD WA7ED WA AKTER MEN 3AMOD 3ADI¶

In [28]:
data['SEGMENT'].unique()
Out[28]:
array(['Independent Dealers', 'Small Franchised Dealers',
       'Franchised Dealers', 'Schotterplatz Dealers', 'Luxury Sellers',
       'Large Independent Dealers', 'Broker', 'Bull Accounts',
       'OTP Optimizers', nan], dtype=object)
In [29]:
data
Out[29]:
SEGMENT campaignstartdate campaignenddate campaign progress STATUS contacted conversion cr2 basis REJECTIONREASON ... Classified UndisRev M10 Classified Rev M11 Classified UndisRev M11 Classified Rev M12 Classified UndisRev M12 Classified Rev M13 Classified UndisRev M13 Classified Rev M14 Classified UndisRev M14 Campaign_Duration
0 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 69.9 119.0 69.9 119.0 69.9 119.0 69.9 119.0 66 days
1 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 66 days
2 Small Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 66 days
3 Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 66 days
4 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 139.0 139.0 139.0 139.0 139.0 139.0 66 days
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90155 Independent Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90156 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90157 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90158 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 Export Business ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days

90159 rows × 78 columns

3- Which segments were targeted by each advertising campaign ?¶

ana hena 3awez a3rf kol 7amla e3lania esthdeft 4raye7 a ? fa el mnteki eni ast5dem el function groupby ma3 el function nunique() le 3amod el campaign ma3 3amod el SEGMENT 34an el function de btgeb 3dad el kiam el fareda y3ni eli mesh metkrara fe 3AMOD WA7ED WA AKTER MEN 3AMOD 3ADI¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

nunique() : de btgeb 3dad el kiam el fareda y3ni eli mesh metkrara fe 3AMOD WA7ED WA AKTER MEN 3AMOD 3ADI¶

reset_index() : de debd5al el data gwa gdwal¶

ana hena est5demt el tare2a el 2ola bta3et el groupby 34an ageb el 4raye7 el mosthdfa men kol 7mla e3lania bdon tekrar bst5dam el function nunique() fa 3amlt groupby le 3amod el campaign ma3 3amod el campaign we 3amod el SEGMENT b3d keda d5lthom fe gdwal 3n tare2 el mo3dla reset_index() fa gabli error 34an fe 3amoden be nafs el esm fa ast5demt el mo3dla rename('') 34an a3'ier esm el 3amod campaign el tany le ('Targeted Segments by each Campaign')¶

In [30]:
data['campaign'].rename('Targeted Segments by each Campaign').groupby([data['campaign'],data['SEGMENT']]).nunique().reset_index()
Out[30]:
campaign SEGMENT Targeted Segments by each Campaign
0 BKD_DE_VM_2008_Akquise Franchised Dealers 1
1 BKD_DE_VM_2008_Akquise Independent Dealers 1
2 BKD_DE_VM_2008_Akquise Large Independent Dealers 1
3 BKD_DE_VM_2008_Akquise Luxury Sellers 1
4 BKD_DE_VM_2008_Akquise Schotterplatz Dealers 1
... ... ... ...
1033 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Aq... Schotterplatz Dealers 1
1034 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Independent Dealers 1
1035 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Large Independent Dealers 1
1036 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Luxury Sellers 1
1037 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Schotterplatz Dealers 1

1038 rows × 3 columns

reset_index(name='') : de bst5demha 34an a3'ier esm 3amod¶

ana hena est5demt el tare2a el tanya bta3et el groupby 34an ageb el 4raye7 el mosthdfa men kol 7mla e3lania bdon tekrar bst5dam el function nunique() fa 3amlt groupby le 3amod el campaign we 3amod el SEGMENT ma3 3amod el campaign fa gabli error 34an fe 3amoden be nafs el esm fa ast5demt el function reset_index(name='') 34an a3'ier esm el 3amod campaign el tany le 'Targeted Segments by each Campaign'¶

In [31]:
data.groupby(['campaign','SEGMENT'])['campaign'].nunique().reset_index(name='Targeted Segments by each Campaign')
Out[31]:
campaign SEGMENT Targeted Segments by each Campaign
0 BKD_DE_VM_2008_Akquise Franchised Dealers 1
1 BKD_DE_VM_2008_Akquise Independent Dealers 1
2 BKD_DE_VM_2008_Akquise Large Independent Dealers 1
3 BKD_DE_VM_2008_Akquise Luxury Sellers 1
4 BKD_DE_VM_2008_Akquise Schotterplatz Dealers 1
... ... ... ...
1033 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Aq... Schotterplatz Dealers 1
1034 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Independent Dealers 1
1035 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Large Independent Dealers 1
1036 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Luxury Sellers 1
1037 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Schotterplatz Dealers 1

1038 rows × 3 columns

4- Who are the most important segments should be targeted to make bigger revenue ?¶

el tfker el manteky bt3ha eni a4of anhy akter 4raye7 esthdeftha el 7mlat el e3lania 34an sa3etha hia de eli ana hrkez 3aleha fel 7mlat el e3lania el gaya 34an de eli htgebli akber nesba men el arba7 we de leha tar2ten :¶

1- Eni bageb 3dad el 4raye7 el mosthdfa fe kol 7amla e3lania¶

2- Eni a4of kol 4are7a esthdeftha kam 7amla e3lania y3ni ageb mda tekrar kol 4are7a fe kol 7amla e3lania¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

AWEL TARE2A: ana hena est5demt el tare2a el 2ola bta3et el groupby we 3amlt mot3'ier esmo t d5lt gwah 3dad el 4raye7 el mosthdfa men kol 7mla e3lania bdon tekrar bst5dam el function nunique() fa 3amlt groupby le 3amod el campaign ma3 3amod el campaign we 3amod el SEGMENT b3d keda d5lthom fe gdwal 3n tare2 el mo3dla reset_index() fa gabli error 34an fe 3amoden be nafs el esm fa ast5demt el mo3dla rename('') 34an a3'ier esm el 3amod campaign el tany le ('Number of targeted Segments by each Campaign')¶

In [32]:
t=data['campaign'].rename('Number of targeted Segments by each Campaign').groupby([data['campaign'],data['SEGMENT']]).nunique().reset_index()
t
Out[32]:
campaign SEGMENT Number of targeted Segments by each Campaign
0 BKD_DE_VM_2008_Akquise Franchised Dealers 1
1 BKD_DE_VM_2008_Akquise Independent Dealers 1
2 BKD_DE_VM_2008_Akquise Large Independent Dealers 1
3 BKD_DE_VM_2008_Akquise Luxury Sellers 1
4 BKD_DE_VM_2008_Akquise Schotterplatz Dealers 1
... ... ... ...
1033 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Aq... Schotterplatz Dealers 1
1034 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Independent Dealers 1
1035 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Large Independent Dealers 1
1036 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Luxury Sellers 1
1037 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Schotterplatz Dealers 1

1038 rows × 3 columns

b3d keda est5demt bardo el tar2a el 2ola bta3et el groupby ma3 el function sum() 34an ageb mgmo3 el el 4raye7 el mosthdfa fe kol 7amla e3lania fe kol 4are7a we d5lthom fe gdwal bst5dam el function reset_index()¶

In [33]:
t['Number of targeted Segments by each Campaign'].groupby(t['SEGMENT']).sum().reset_index()
Out[33]:
SEGMENT Number of targeted Segments by each Campaign
0 Broker 80
1 Bull Accounts 54
2 Franchised Dealers 124
3 Independent Dealers 168
4 Large Independent Dealers 121
5 Luxury Sellers 135
6 OTP Optimizers 89
7 Schotterplatz Dealers 142
8 Small Franchised Dealers 125

aw est5demt bardo el tar2a el tanya bta3et el groupby ma3 el function sum() 34an ageb bardo mgmo3 el el 4raye7 el mosthdfa fe kol 7amla e3lania fe kol 4are7a we d5lthom fe gdwal bst5dam el function reset_index()¶

In [34]:
t.groupby('SEGMENT')['Number of targeted Segments by each Campaign'].sum().reset_index()
Out[34]:
SEGMENT Number of targeted Segments by each Campaign
0 Broker 80
1 Bull Accounts 54
2 Franchised Dealers 124
3 Independent Dealers 168
4 Large Independent Dealers 121
5 Luxury Sellers 135
6 OTP Optimizers 89
7 Schotterplatz Dealers 142
8 Small Franchised Dealers 125

AWEL TARE2A: ana hena est5demt el tare2a el tanya bta3et el groupby we 3amlt mot3'ier esmo t d5lt gwah 3dad el 4raye7 el mosthdfa men kol 7mla e3lania fe kol 4are7a bdon tekrar bst5dam el function nunique() fa 3amlt groupby le 3amod el campaign we 3amod el SEGMENT ma3 3amod el campaign fa gabli error 34an fe 3amoden be nafs el esm fa ast5demt el function reset_index(name='') 34an a3'ier esm el 3amod campaign el tany le 'Number of targeted Segments by each Campaign'¶

In [35]:
t=data.groupby(['campaign','SEGMENT'])['campaign'].nunique().reset_index(name='Number of targeted Segments by each Campaign')
t
Out[35]:
campaign SEGMENT Number of targeted Segments by each Campaign
0 BKD_DE_VM_2008_Akquise Franchised Dealers 1
1 BKD_DE_VM_2008_Akquise Independent Dealers 1
2 BKD_DE_VM_2008_Akquise Large Independent Dealers 1
3 BKD_DE_VM_2008_Akquise Luxury Sellers 1
4 BKD_DE_VM_2008_Akquise Schotterplatz Dealers 1
... ... ... ...
1033 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Aq... Schotterplatz Dealers 1
1034 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Independent Dealers 1
1035 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Large Independent Dealers 1
1036 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Luxury Sellers 1
1037 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... Schotterplatz Dealers 1

1038 rows × 3 columns

b3d keda est5demt bardo el tar2a el 2ola bta3et el groupby ma3 el function sum() 34an ageb mgmo3 el el 4raye7 el mosthdfa fe kol 7amla e3lania fe kol 4are7a we d5lthom fe gdwal bst5dam el function reset_index()¶

In [36]:
t['Number of targeted Segments by each Campaign'].groupby(t['SEGMENT']).sum().reset_index()
Out[36]:
SEGMENT Number of targeted Segments by each Campaign
0 Broker 80
1 Bull Accounts 54
2 Franchised Dealers 124
3 Independent Dealers 168
4 Large Independent Dealers 121
5 Luxury Sellers 135
6 OTP Optimizers 89
7 Schotterplatz Dealers 142
8 Small Franchised Dealers 125

aw est5demt bardo el tar2a el tanya bta3et el groupby ma3 el function sum() 34an ageb bardo mgmo3 el el 4raye7 el mosthdfa fe kol 7amla e3lania fe kol 4are7a we d5lthom fe gdwal bst5dam el function reset_index()¶

In [37]:
t.groupby('SEGMENT')['Number of targeted Segments by each Campaign'].sum().reset_index()
Out[37]:
SEGMENT Number of targeted Segments by each Campaign
0 Broker 80
1 Bull Accounts 54
2 Franchised Dealers 124
3 Independent Dealers 168
4 Large Independent Dealers 121
5 Luxury Sellers 135
6 OTP Optimizers 89
7 Schotterplatz Dealers 142
8 Small Franchised Dealers 125

value_counts() : de m3naha mekdar tekrar kol kema fel 3amod¶

reset_index(name='') : de bst5demha 34an a3'ier esm el 3amod el 2a5er eli hit3mel b3d est5dam el groupby mslan¶

TANY TARE2A: 3amlt mot3'ier esmo w we d5alt gwah mekdar tekrar kol 4are7a tam estahdfa men el 7amlat el e3lania y3ni gebt mgmo3 el 4raye7 el mosthdfa fe kol 4are7a bst5dam el function value_counts() we d5lthom fe gdwal we samet el 3amod eli et3aml be esm "Number of targeted Segments by each Campaign" bst5dam el function reset_index(name='')¶

In [38]:
w=t['SEGMENT'].value_counts().reset_index(name='Number of targeted Segments by each Campaign')
w
Out[38]:
SEGMENT Number of targeted Segments by each Campaign
0 Independent Dealers 168
1 Schotterplatz Dealers 142
2 Luxury Sellers 135
3 Small Franchised Dealers 125
4 Franchised Dealers 124
5 Large Independent Dealers 121
6 OTP Optimizers 89
7 Broker 80
8 Bull Accounts 54

ana hena rasmt Pie chart lel mot3'ier t eli gwah 3dad el 4raye7 el mosthdfa men kol 7mla e3lania fe kol 4are7a bdon tekrar we 7atet fel names el 3amod el nusy eli hwa hena 'SEGMENT' we 7atet fel values eli 3amod el rakmy eli hwa hena 'Number of Targets¶

In [39]:
px.pie(w,names='SEGMENT',values='Number of targeted Segments by each Campaign')

5- What is the most rejection reason?¶

el tafker el emanteky eni ageb mekdar tekrar kol kima fe 3amod el REJECTIONREASON fa hitl3 kol no3 raf etkrar kam mra fa tel3 akter no3 rafd hwa "No Interest" be 3dad 15402 we rtebto tnazoli men 7es el count we tba3t awel 10 asbab rafd¶

In [40]:
r=data['REJECTIONREASON'].value_counts().reset_index().sort_values(by='count',ascending=False).head(10)
r
Out[40]:
REJECTIONREASON count
0 No Interest 15402
1 Competitor Preferred 5613
2 Wrong Time 3992
3 Contact Limit Reached 3047
4 No Potential 2464
5 Bankruptcy / Business Liquidation 1757
6 Wrong Campaign Selection 1635
7 Not Enough Cars 1336
8 Bad Experience 1082
9 Duplicate 1073

ana hena rasmt column bar chart lel mot3'ier r we 7atet fel x el 3amod el nusy REJECTIONREASON we 7atet fel y el 3amod el rakmy count we 5alet 3ard el chart 1000 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "Top 10 Rejection reasons"¶

In [41]:
px.bar(r,x='REJECTIONREASON',y='count',text_auto='.2s',width=1000,height=600,title='Top 10 Rejection reasons')

6- Which campaign/campaign offer/sales channel would be the optimal to use If the primary goal is to increase customer size ?¶

el so2al hena by2ol anhy 7amla e3lania bete5ale 3dad el 3omla yzed?¶

el tafker el manteky lel so2al da eni a4of anhy 7mla e3lania bet5ale el client yemdy 3a2d wel 3amod bta3 el 3a2d esmo conversion fa law 3amod el conversion bisawy 1 ezn keda el 3amel mda 3a2d we law 0 yeb2a el 3amel mmda4 3a2d¶

AWEL TARE2A eni hst5dem el function value_counts() : fa 3amlt mot3'ier esmo signed_offers 7atet gwah mekdar tekrar kol 7amla e3lania bel conversion bt3ha y3ni mslan awel 7amla e3lania eli hia 'TS_DE_VM_2103_Akquise' lma conversion bt3ha kan be zero y3ni lma el 3amel mamda4 el 3a2d etkraret 2345 mra we hakza b3d keda d5lthom fe gdwal we rtebthom tnazoli men 7es 3amod el count eli tel3 lma nfezt el function value_counts()¶

In [42]:
signed_offers=data[['campaign','conversion']].value_counts().reset_index().sort_values(by='count',ascending=False)
signed_offers.info()
signed_offers
<class 'pandas.core.frame.DataFrame'>
Index: 381 entries, 0 to 380
Data columns (total 3 columns):
 #   Column      Non-Null Count  Dtype 
---  ------      --------------  ----- 
 0   campaign    381 non-null    object
 1   conversion  381 non-null    int64 
 2   count       381 non-null    int64 
dtypes: int64(2), object(1)
memory usage: 11.9+ KB
Out[42]:
campaign conversion count
0 TS_DE_VM_2103_Akquise 0 2345
1 TS_DE_VM_2104_RMS Attack Independent_Acquisition 0 2344
2 KAM_DE_VM_2102_Kick Ass Corona Challenge 0 2290
3 BKD_DE_VM_2103_Akquise 0 1884
4 BKD_DE_VM_2105_RMS Attack Independent Acquisition 0 1538
... ... ... ...
376 TS_DE_VM_2112_RMS Attack Small Franchised Foll... 1 1
377 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 1
378 KAM_DE_VM_2111_mobile.de churn Acquisition 1 1
379 KAM_DE_VM_2109_RMS Attack Franchised Follow-up 1 1
380 TS_DE_VM_2112_RMS Attack Small Franchised Acqu... 1 1

381 rows × 3 columns

b3d keda 3amlt filter le 3amod el conversion 34an a3red eli el kima bt3to betsawy 1 bs y3ni el 7amla el e3lania eli bsbbha el 3amel mda 3a2d b3d keda 3radt akber 10 kiam fe 3amod el count¶

In [43]:
signed_offers=signed_offers[signed_offers['conversion']==1].nlargest(10,'count')
signed_offers
Out[43]:
campaign conversion count
67 KAM_DE_VM_2102_Kick Ass Corona Challenge 1 408
85 KAM_DE_VM_2008_Vollgas mit AutoScout24 1 315
128 TS_DE_VM_2007_Divide&Conquer_BW 1 187
136 KAM_DE_VM_2003_Sales Challenge_Single Locations 1 163
139 BKD_DE_VM_2008_Akquise 1 155
142 TS_DE_VM_2102_Akquise 1 151
146 TS_DE_VM_2102_Kick Ass Corona Challenge 1 140
149 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 1 134
152 TS_DE_VM_2007_Divide&Conquer_München 1 126
154 TS_DE_VM_2003_Sales Challenge 1 125

b3d keda 4elt 3amod el conversion 34an mihmne4 fe 7aga 34an 3awez a3red bs kol 7mla e3lania etmda bsbbha kam 3a2d¶

In [44]:
signed_offers=signed_offers[signed_offers['conversion']==1].nlargest(10,'count').drop(columns=['conversion'])
signed_offers
Out[44]:
campaign count
67 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
85 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
128 TS_DE_VM_2007_Divide&Conquer_BW 187
136 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
139 BKD_DE_VM_2008_Akquise 155
142 TS_DE_VM_2102_Akquise 151
146 TS_DE_VM_2102_Kick Ass Corona Challenge 140
149 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
152 TS_DE_VM_2007_Divide&Conquer_München 126
154 TS_DE_VM_2003_Sales Challenge 125

b3d keda 3radt el 3wamed eli fel mot3'ier signed_offers bst5dam el function columns 34an at2ked eno mas7 3amod el conversion fa 2al en gwah 3amoden campaign & count¶

.columns --> de function bst5demha law 3awez a3red asma2 el 3wamed eli gwa mot3'ier mo3ian¶

In [45]:
signed_offers.columns
Out[45]:
Index(['campaign', 'count'], dtype='object')

b3d keda 3amlt rename le 3amod el count we 5alet esmo 'Number of signed offers!' 34an yeb2a mo3ber akter¶

rename(columns={'esm el 3amod eli 3awez a3'ier esmo':'el esm el gded'}) --> de function bst5dmha 34an a3'ier esm 3amod mo3ian¶

inplace=True --> de function bst5dmha 34an atb2 t3'ier 7asl 3al data¶

In [46]:
signed_offers.rename(columns={'count':'Number of signed offers!'},inplace=True)
In [47]:
signed_offers
Out[47]:
campaign Number of signed offers!
67 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
85 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
128 TS_DE_VM_2007_Divide&Conquer_BW 187
136 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
139 BKD_DE_VM_2008_Akquise 155
142 TS_DE_VM_2102_Akquise 151
146 TS_DE_VM_2102_Kick Ass Corona Challenge 140
149 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
152 TS_DE_VM_2007_Divide&Conquer_München 126
154 TS_DE_VM_2003_Sales Challenge 125

ana hena rasmt column bar chart lel mot3'ier signed_offers we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers! we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [48]:
px.bar(signed_offers,x='campaign',y='Number of signed offers!',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

TANY TARE2A eni hst5dem el function groupby bel tare2a el 2ola ma3 el function sum() fa 34an 3amod el conversion feh 0 we 1 fa keda keda lma bigm3 el kima 0 hatefdl be sefr laken lma ygm3 el kima 1 hitl3 3dad mo3ian 34an keda manteky eni ast5dem el groupby ma3 el function sum() 3adi fa 3amlt mot3'ier esmo x we 7atet gwah mgmo3 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania we d5lthom fe gdwal we samet 3amod el conversion 'Number of signed offers' bst5dam el function rename('Number of signed offers') we rtebthom tnazoli men 7es 3amod el Number of signed offers we 3radt awel 10 sfof bs¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

In [49]:
x=data['conversion'].rename('Number of signed offers').groupby(data['campaign']).sum().reset_index().sort_values(by='Number of signed offers',ascending=False).head(10)
x
Out[49]:
campaign Number of signed offers
53 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
130 TS_DE_VM_2007_Divide&Conquer_BW 187
45 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
0 BKD_DE_VM_2008_Akquise 155
149 TS_DE_VM_2102_Akquise 151
150 TS_DE_VM_2102_Kick Ass Corona Challenge 140
137 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
131 TS_DE_VM_2007_Divide&Conquer_München 126
125 TS_DE_VM_2003_Sales Challenge 125

ana hena rasmt column bar chart lel mot3'ier x we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [50]:
px.bar(x,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

TANY TARE2A eni hst5dem el function groupby bel tare2a el 2ola ma3 el function sum() fa 34an 3amod el conversion feh 0 we 1 fa keda keda lma bigm3 el kima 0 hatefdl be sefr laken lma ygm3 el kima 1 hitl3 3dad mo3ian 34an keda manteky eni ast5dem el groupby ma3 el function sum() 3adi fa 3amlt mot3'ier esmo x1 we 7atet gwah mgmo3 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania we d5lthom fe gdwal we samet el 3amod da 'Number of signed offers' bst5dam el function reset_index(name='Number of signed offers') we rtebthom tnazoli men 7es 3amod el Number of signed offers we 3radt awel 10 sfof bs¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

In [51]:
x1=data['conversion'].groupby(data['campaign']).sum().reset_index(name='Number of signed offers').sort_values(by='Number of signed offers',ascending=False).head(10)
x1.info()
x1
<class 'pandas.core.frame.DataFrame'>
Index: 10 entries, 53 to 125
Data columns (total 2 columns):
 #   Column                   Non-Null Count  Dtype 
---  ------                   --------------  ----- 
 0   campaign                 10 non-null     object
 1   Number of signed offers  10 non-null     int64 
dtypes: int64(1), object(1)
memory usage: 240.0+ bytes
Out[51]:
campaign Number of signed offers
53 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
130 TS_DE_VM_2007_Divide&Conquer_BW 187
45 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
0 BKD_DE_VM_2008_Akquise 155
149 TS_DE_VM_2102_Akquise 151
150 TS_DE_VM_2102_Kick Ass Corona Challenge 140
137 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
131 TS_DE_VM_2007_Divide&Conquer_München 126
125 TS_DE_VM_2003_Sales Challenge 125

ana hena rasmt column bar chart lel mot3'ier x we 7atet fel x1 el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [52]:
px.bar(x1,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

TANY TARE2A eni hst5dem el function groupby bel tare2a el tanya ma3 el function sum() fa 34an 3amod el conversion feh 0 we 1 fa keda keda lma bigm3 el kima 0 hatefdl be sefr laken lma ygm3 el kima 1 hitl3 3dad mo3ian 34an keda manteky eni ast5dem el groupby ma3 el function sum() fa 3amlt mot3'ier esmo y we 7atet gwah mgmo3 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania we d5lthom fe gdwal we samet el 3amod da 'Number of signed offers' bst5dam el function rename(columns={'conversion':'Number of signed offers'}) we rtebthom tnazoli men 7es 3amod el Number of signed offers we 3radt awel 10 sfof bs¶

rename(columns={'esm el 3amod eli 3awez a3'ier esmo':'el esm el gded'}) --> de function bst5dmha 34an a3'ier esm 3amod mo3ian¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

In [53]:
y=data.groupby('campaign')['conversion'].sum().reset_index().rename(columns={'conversion':'Number of signed offers'}).sort_values(by='Number of signed offers',ascending=False).head(10)
y.info()
y
<class 'pandas.core.frame.DataFrame'>
Index: 10 entries, 53 to 125
Data columns (total 2 columns):
 #   Column                   Non-Null Count  Dtype 
---  ------                   --------------  ----- 
 0   campaign                 10 non-null     object
 1   Number of signed offers  10 non-null     int64 
dtypes: int64(1), object(1)
memory usage: 240.0+ bytes
Out[53]:
campaign Number of signed offers
53 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
130 TS_DE_VM_2007_Divide&Conquer_BW 187
45 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
0 BKD_DE_VM_2008_Akquise 155
149 TS_DE_VM_2102_Akquise 151
150 TS_DE_VM_2102_Kick Ass Corona Challenge 140
137 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
131 TS_DE_VM_2007_Divide&Conquer_München 126
125 TS_DE_VM_2003_Sales Challenge 125

ana hena rasmt column bar chart lel mot3'ier y we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [54]:
px.bar(y,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

TANY TARE2A eni hst5dem el function groupby bel tare2a el tanya ma3 el function sum() fa 34an 3amod el conversion feh 0 we 1 fa keda keda lma bigm3 el kima 0 hatefdl be sefr laken lma ygm3 el kima 1 hitl3 3dad mo3ian 34an keda manteky eni ast5dem el groupby ma3 el function sum() fa 3amlt mot3'ier esmo y1 we 7atet gwah mgmo3 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania we d5lthom fe gdwal we samet el 3amod da 'Number of signed offers' bst5dam el function reset_index(name='Number of signed offers') we rtebthom tnazoli men 7es 3amod el Number of signed offers we 3radt awel 10 sfof bs¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

In [55]:
y1=data.groupby('campaign')['conversion'].sum().reset_index(name='Number of signed offers').sort_values(by='Number of signed offers',ascending=False).head(10)
y1.info()
y1
<class 'pandas.core.frame.DataFrame'>
Index: 10 entries, 53 to 125
Data columns (total 2 columns):
 #   Column                   Non-Null Count  Dtype 
---  ------                   --------------  ----- 
 0   campaign                 10 non-null     object
 1   Number of signed offers  10 non-null     int64 
dtypes: int64(1), object(1)
memory usage: 240.0+ bytes
Out[55]:
campaign Number of signed offers
53 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
51 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
130 TS_DE_VM_2007_Divide&Conquer_BW 187
45 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
0 BKD_DE_VM_2008_Akquise 155
149 TS_DE_VM_2102_Akquise 151
150 TS_DE_VM_2102_Kick Ass Corona Challenge 140
137 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
131 TS_DE_VM_2007_Divide&Conquer_München 126
125 TS_DE_VM_2003_Sales Challenge 125

ana hena rasmt column bar chart lel mot3'ier y1 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [56]:
px.bar(y1,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

TALET TARE2A eni hst5dem el function groupby bel tare2a el 2ola ma3 el function count() fa 3amlt mot3'ier esmo x1 we 7atet gwah 3dad 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania ma3 3amod el conversion tany y3ni ma3 kol no3 3a2d we d5lthom fe gdwal we samet 3amod el conversion el tany 'Number of signed offers' bst5dam el function rename('Number of signed offers') we rtebthom tnazoli men 7es 3amod el Number of signed offers¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy'],data['3amod rakmy']).esm el function¶

2- data.groupby(['3amod nusy','3amod rakmy'])['3amod rakmy'].esm el function¶

In [57]:
x1=data['conversion'].rename('Number of signed offers').groupby([data['campaign'],data['conversion']]).count().reset_index().sort_values(by='Number of signed offers',ascending=False)
x1.info()
x1
<class 'pandas.core.frame.DataFrame'>
Index: 381 entries, 290 to 355
Data columns (total 3 columns):
 #   Column                   Non-Null Count  Dtype 
---  ------                   --------------  ----- 
 0   campaign                 381 non-null    object
 1   conversion               381 non-null    int64 
 2   Number of signed offers  381 non-null    int64 
dtypes: int64(2), object(1)
memory usage: 11.9+ KB
Out[57]:
campaign conversion Number of signed offers
290 TS_DE_VM_2103_Akquise 0 2345
292 TS_DE_VM_2104_RMS Attack Independent_Acquisition 0 2344
101 KAM_DE_VM_2102_Kick Ass Corona Challenge 0 2290
18 BKD_DE_VM_2103_Akquise 0 1884
20 BKD_DE_VM_2105_RMS Attack Independent Acquisition 0 1538
... ... ... ...
357 TS_DE_VM_2112_RMS Attack Small Franchised Foll... 1 1
90 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 1
150 KAM_DE_VM_2111_mobile.de churn Acquisition 1 1
128 KAM_DE_VM_2109_RMS Attack Franchised Follow-up 1 1
355 TS_DE_VM_2112_RMS Attack Small Franchised Acqu... 1 1

381 rows × 3 columns

b3d keda 3amlt filter le 3amod el conversion 34an a3red eli el kima bt3to betsawy 1 bs y3ni el 7amla el e3lania eli bsbbha el 3amel mda 3a2d b3d keda 3radt akber 10 kiam fe 3amod el Number of signed offers¶

In [58]:
x1=x1[x1['conversion']==1].nlargest(10,'Number of signed offers')
x1
Out[58]:
campaign conversion Number of signed offers
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 1 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 1 315
250 TS_DE_VM_2007_Divide&Conquer_BW 1 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 1 163
1 BKD_DE_VM_2008_Akquise 1 155
287 TS_DE_VM_2102_Akquise 1 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 1 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 1 134
252 TS_DE_VM_2007_Divide&Conquer_München 1 126
240 TS_DE_VM_2003_Sales Challenge 1 125

b3d keda 4elt 3amod el conversion 34an mihmne4 fe 7aga 34an 3awez a3red bs kol 7mla e3lania etmda bsbbha kam 3a2d¶

In [59]:
x1=x1[x1['conversion']==1].nlargest(10,'Number of signed offers').drop(columns='conversion')
x1
Out[59]:
campaign Number of signed offers
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
250 TS_DE_VM_2007_Divide&Conquer_BW 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
1 BKD_DE_VM_2008_Akquise 155
287 TS_DE_VM_2102_Akquise 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
252 TS_DE_VM_2007_Divide&Conquer_München 126
240 TS_DE_VM_2003_Sales Challenge 125

b3d keda 3radt el 3wamed eli fel mot3'ier x1 bst5dam el function columns 34an at2ked eno mas7 3amod el conversion fa 2al en gwah 3amoden campaign & Number of signed offers¶

.columns --> de function bst5demha law 3awez a3red asma2 el 3wamed eli gwa mot3'ier mo3ian¶

In [60]:
x1.columns
Out[60]:
Index(['campaign', 'Number of signed offers'], dtype='object')

ana hena rasmt column bar chart lel mot3'ier x1 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [61]:
px.bar(x1,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy'],data['3amod rakmy']).esm el function¶

2- data.groupby(['3amod nusy','3amod rakmy'])['3amod rakmy'].esm el function¶

TALET TARE2A eni hst5dem el function groupby bel tare2a el 2ola ma3 el function count() bardo bs eni 3'irt esm 2a5er 3amod el conversion el tany le Number of signed offers keda : fa 3amlt mot3'ier esmo x2 we 7atet gwah 3dad 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania ma3 3amod el conversion tany y3ni ma3 kol no3 3a2d we d5lthom fe gdwal we samet 3amod el conversion el tany 'Number of signed offers' bst5dam el function reset_index(name='Number of signed offers') we rtebthom tnazoli men 7es 3amod el Number of signed offers¶

In [62]:
x2=data['conversion'].groupby([data['campaign'],data['conversion']]).count().reset_index(name='Number of signed offers').sort_values(by='Number of signed offers',ascending=False)
x2.info()
x2
<class 'pandas.core.frame.DataFrame'>
Index: 381 entries, 290 to 355
Data columns (total 3 columns):
 #   Column                   Non-Null Count  Dtype 
---  ------                   --------------  ----- 
 0   campaign                 381 non-null    object
 1   conversion               381 non-null    int64 
 2   Number of signed offers  381 non-null    int64 
dtypes: int64(2), object(1)
memory usage: 11.9+ KB
Out[62]:
campaign conversion Number of signed offers
290 TS_DE_VM_2103_Akquise 0 2345
292 TS_DE_VM_2104_RMS Attack Independent_Acquisition 0 2344
101 KAM_DE_VM_2102_Kick Ass Corona Challenge 0 2290
18 BKD_DE_VM_2103_Akquise 0 1884
20 BKD_DE_VM_2105_RMS Attack Independent Acquisition 0 1538
... ... ... ...
357 TS_DE_VM_2112_RMS Attack Small Franchised Foll... 1 1
90 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 1
150 KAM_DE_VM_2111_mobile.de churn Acquisition 1 1
128 KAM_DE_VM_2109_RMS Attack Franchised Follow-up 1 1
355 TS_DE_VM_2112_RMS Attack Small Franchised Acqu... 1 1

381 rows × 3 columns

b3d keda 3amlt filter le 3amod el conversion 34an a3red eli el kima bt3to betsawy 1 bs y3ni el 7amla el e3lania eli bsbbha el 3amel mda 3a2d b3d keda 3radt akber 10 kiam fe 3amod el Number of signed offers¶

In [63]:
x2=x2[x2['conversion']==1].nlargest(10,'Number of signed offers')
x2
Out[63]:
campaign conversion Number of signed offers
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 1 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 1 315
250 TS_DE_VM_2007_Divide&Conquer_BW 1 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 1 163
1 BKD_DE_VM_2008_Akquise 1 155
287 TS_DE_VM_2102_Akquise 1 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 1 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 1 134
252 TS_DE_VM_2007_Divide&Conquer_München 1 126
240 TS_DE_VM_2003_Sales Challenge 1 125

b3d keda 4elt 3amod el conversion 34an mihmne4 fe 7aga 34an 3awez a3red bs kol 7mla e3lania etmda bsbbha kam 3a2d¶

In [64]:
x2=x2[x2['conversion']==1].nlargest(10,'Number of signed offers').drop(columns='conversion')
x2
Out[64]:
campaign Number of signed offers
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
250 TS_DE_VM_2007_Divide&Conquer_BW 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
1 BKD_DE_VM_2008_Akquise 155
287 TS_DE_VM_2102_Akquise 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
252 TS_DE_VM_2007_Divide&Conquer_München 126
240 TS_DE_VM_2003_Sales Challenge 125

b3d keda 3radt el 3wamed eli fel mot3'ier x1 bst5dam el function columns 34an at2ked eno mas7 3amod el conversion fa 2al en gwah 3amoden campaign & Number of signed offers¶

.columns --> de function bst5demha law 3awez a3red asma2 el 3wamed eli gwa mot3'ier mo3ian¶

In [65]:
x2.columns
Out[65]:
Index(['campaign', 'Number of signed offers'], dtype='object')

ana hena rasmt column bar chart lel mot3'ier x2 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy Number of signed offers we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [66]:
px.bar(x2,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy'],data['3amod rakmy']).esm el function¶

2- data.groupby([data['3amod nusy',data['3amod rakmy']])['3amod rakmy'].esm el function¶

TALET TARE2A eni hst5dem el function groupby bel tare2a el tanya ma3 el function count() bardo fa 3amlt mot3'ier esmo x3 we 7atet gwah 3dad 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania ma3 3amod el conversion tany y3ni ma3 kol no3 3a2d we d5lthom fe gdwal we samet 3amod el conversion el awel 'Contract Type' bst5dam el function .rename('Contract Type') we rtebthom tnazoli men 7es 3amod el conversion 3adi¶

In [67]:
x3=data.groupby([data['campaign'],data['conversion'].rename('Contract Type')])['conversion'].count().reset_index().sort_values(by='conversion',ascending=False)
x3
Out[67]:
campaign Contract Type conversion
290 TS_DE_VM_2103_Akquise 0 2345
292 TS_DE_VM_2104_RMS Attack Independent_Acquisition 0 2344
101 KAM_DE_VM_2102_Kick Ass Corona Challenge 0 2290
18 BKD_DE_VM_2103_Akquise 0 1884
20 BKD_DE_VM_2105_RMS Attack Independent Acquisition 0 1538
... ... ... ...
357 TS_DE_VM_2112_RMS Attack Small Franchised Foll... 1 1
90 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 1
150 KAM_DE_VM_2111_mobile.de churn Acquisition 1 1
128 KAM_DE_VM_2109_RMS Attack Franchised Follow-up 1 1
355 TS_DE_VM_2112_RMS Attack Small Franchised Acqu... 1 1

381 rows × 3 columns

b3d keda 3amlt filter le 3amod el Contract Type 34an a3red eli el kima bt3to betsawy 1 bs y3ni el 7amla el e3lania eli bsbbha el 3amel mda 3a2d b3d keda 3radt akber 10 kiam fe 3amod el conversion¶

In [68]:
x3=x3[x3['Contract Type']==1].nlargest(10,'conversion')
x3
Out[68]:
campaign Contract Type conversion
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 1 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 1 315
250 TS_DE_VM_2007_Divide&Conquer_BW 1 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 1 163
1 BKD_DE_VM_2008_Akquise 1 155
287 TS_DE_VM_2102_Akquise 1 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 1 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 1 134
252 TS_DE_VM_2007_Divide&Conquer_München 1 126
240 TS_DE_VM_2003_Sales Challenge 1 125

b3d keda 4elt 3amod el Contract Type 34an mihmne4 fe 7aga 34an 3awez a3red bs kol 7mla e3lania etmda bsbbha kam 3a2d¶

In [69]:
x3=x3[x3['Contract Type']==1].nlargest(10,'conversion').drop(columns='Contract Type')
x3
Out[69]:
campaign conversion
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
250 TS_DE_VM_2007_Divide&Conquer_BW 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
1 BKD_DE_VM_2008_Akquise 155
287 TS_DE_VM_2102_Akquise 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
252 TS_DE_VM_2007_Divide&Conquer_München 126
240 TS_DE_VM_2003_Sales Challenge 125

b3d keda 3radt el 3wamed eli fel mot3'ier y1 bst5dam el function columns 34an at2ked eno mas7 3amod el Contract Type fa 2al en gwah 3amoden campaign & conversion¶

.columns --> de function bst5demha law 3awez a3red asma2 el 3wamed eli gwa mot3'ier mo3ian¶

x3.columns

ana hena rasmt column bar chart lel mot3'ier x3 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy conversion we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [70]:
px.bar(x3,x='campaign',y='conversion',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy'],data['3amod rakmy']).esm el function¶

2- data.groupby(['3amod nusy','3amod rakmy'])['3amod rakmy'].esm el function¶

TALET TARE2A eni hst5dem el function groupby bel tare2a el tanya ma3 el function count() bardo fa 3amlt mot3'ier esmo x4 we 7atet gwah 3dad 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania ma3 3amod el conversion tany y3ni ma3 kol no3 3a2d we d5lthom fe gdwal we samet 3amod el conversion el awel 'Contract Type' bst5dam el function .rename_axis(['campaign','Contract Type']) we rtebthom tnazoli men 7es 3amod el conversion 3adi¶

.rename_axis(['esm awel 3amod fel gdwal 3awez a3'iro','esm tany 3amod fel gdwal 3awez a3'iro']) --> de bet3'ier asma2 el3wamd fel gdwal zy mna 7atet belzabt y3ni law 7atet keda .rename_axis(['TEST','Contract Type']) esm awel 3amod fel gdwal hib2a TEST we esm tany 3amod fel gdwal hib2a Contract Type¶

In [71]:
x4=data.groupby(['campaign','conversion'])['conversion'].count().rename_axis(['campaign','Contract Type']).reset_index().sort_values(by='conversion',ascending=False)
x4
Out[71]:
campaign Contract Type conversion
290 TS_DE_VM_2103_Akquise 0 2345
292 TS_DE_VM_2104_RMS Attack Independent_Acquisition 0 2344
101 KAM_DE_VM_2102_Kick Ass Corona Challenge 0 2290
18 BKD_DE_VM_2103_Akquise 0 1884
20 BKD_DE_VM_2105_RMS Attack Independent Acquisition 0 1538
... ... ... ...
357 TS_DE_VM_2112_RMS Attack Small Franchised Foll... 1 1
90 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 1
150 KAM_DE_VM_2111_mobile.de churn Acquisition 1 1
128 KAM_DE_VM_2109_RMS Attack Franchised Follow-up 1 1
355 TS_DE_VM_2112_RMS Attack Small Franchised Acqu... 1 1

381 rows × 3 columns

b3d keda 3amlt filter le 3amod el Contract Type 34an a3red eli el kima bt3to betsawy 1 bs y3ni el 7amla el e3lania eli bsbbha el 3amel mda 3a2d b3d keda 3radt akber 10 kiam fe 3amod el conversion¶

In [72]:
x4=x4[x4['Contract Type']==1].nlargest(10,'conversion')
x4
Out[72]:
campaign Contract Type conversion
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 1 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 1 315
250 TS_DE_VM_2007_Divide&Conquer_BW 1 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 1 163
1 BKD_DE_VM_2008_Akquise 1 155
287 TS_DE_VM_2102_Akquise 1 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 1 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 1 134
252 TS_DE_VM_2007_Divide&Conquer_München 1 126
240 TS_DE_VM_2003_Sales Challenge 1 125

b3d keda 4elt 3amod el Contract Type 34an mihmne4 fe 7aga 34an 3awez a3red bs kol 7mla e3lania etmda bsbbha kam 3a2d¶

In [73]:
x4=x4[x4['Contract Type']==1].nlargest(10,'conversion').drop(columns='Contract Type')
x4
Out[73]:
campaign conversion
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
250 TS_DE_VM_2007_Divide&Conquer_BW 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
1 BKD_DE_VM_2008_Akquise 155
287 TS_DE_VM_2102_Akquise 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
252 TS_DE_VM_2007_Divide&Conquer_München 126
240 TS_DE_VM_2003_Sales Challenge 125

b3d keda 3radt el 3wamed eli fel mot3'ier y1 bst5dam el function columns 34an at2ked eno mas7 3amod el Contract Type fa 2al en gwah 3amoden campaign & conversion¶

.columns --> de function bst5demha law 3awez a3red asma2 el 3wamed eli gwa mot3'ier mo3ian¶

In [74]:
x4.columns
Out[74]:
Index(['campaign', 'conversion'], dtype='object')

ana hena rasmt column bar chart lel mot3'ier x4 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy conversion we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [75]:
px.bar(x4,x='campaign',y='conversion',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy'],data['3amod rakmy']).esm el function¶

2- data.groupby(['3amod nusy','3amod rakmy'])['3amod rakmy'].esm el function¶

TALET TARE2A eni hst5dem el function groupby bel tare2a el tanya ma3 el function count() bardo fa 3amlt mot3'ier esmo x5 we 7atet gwah 3dad 3amod el conversion eli hwa no3 el 3a2d fe kol 7amla e3lania ma3 3amod el conversion tany y3ni ma3 kol no3 3a2d we d5lthom fe gdwal we samet 3amod el conversion el tany 'Number of signed offers' bst5dam el function reset_index(name='Number of signed offers') we rtebthom tnazoli men 7es 3amod el Number of signed offers¶

In [76]:
x5=data.groupby(['campaign','conversion'])['conversion'].count().reset_index(name='Number of signed offers').sort_values(by='Number of signed offers',ascending=False)
x5
Out[76]:
campaign conversion Number of signed offers
290 TS_DE_VM_2103_Akquise 0 2345
292 TS_DE_VM_2104_RMS Attack Independent_Acquisition 0 2344
101 KAM_DE_VM_2102_Kick Ass Corona Challenge 0 2290
18 BKD_DE_VM_2103_Akquise 0 1884
20 BKD_DE_VM_2105_RMS Attack Independent Acquisition 0 1538
... ... ... ...
357 TS_DE_VM_2112_RMS Attack Small Franchised Foll... 1 1
90 KAM_DE_VM_2006_RALF-TEST_DO-NOT-USE 1 1
150 KAM_DE_VM_2111_mobile.de churn Acquisition 1 1
128 KAM_DE_VM_2109_RMS Attack Franchised Follow-up 1 1
355 TS_DE_VM_2112_RMS Attack Small Franchised Acqu... 1 1

381 rows × 3 columns

b3d keda 3amlt filter le 3amod el conversion 34an a3red eli el kima bt3to betsawy 1 bs y3ni el 7amla el e3lania eli bsbbha el 3amel mda 3a2d b3d keda 3radt akber 10 kiam fe 3amod el Number of signed offers¶

In [77]:
x5=x5[x5['conversion']==1].nlargest(10,'Number of signed offers')
x5
Out[77]:
campaign conversion Number of signed offers
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 1 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 1 315
250 TS_DE_VM_2007_Divide&Conquer_BW 1 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 1 163
1 BKD_DE_VM_2008_Akquise 1 155
287 TS_DE_VM_2102_Akquise 1 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 1 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 1 134
252 TS_DE_VM_2007_Divide&Conquer_München 1 126
240 TS_DE_VM_2003_Sales Challenge 1 125

b3d keda 4elt 3amod el conversion 34an mihmne4 fe 7aga 34an 3awez a3red bs kol 7mla e3lania etmda bsbbha kam 3a2d¶

In [78]:
x5=x5[x5['conversion']==1].nlargest(10,'Number of signed offers').drop(columns='conversion')
x5
Out[78]:
campaign Number of signed offers
102 KAM_DE_VM_2102_Kick Ass Corona Challenge 408
98 KAM_DE_VM_2008_Vollgas mit AutoScout24 315
250 TS_DE_VM_2007_Divide&Conquer_BW 187
88 KAM_DE_VM_2003_Sales Challenge_Single Locations 163
1 BKD_DE_VM_2008_Akquise 155
287 TS_DE_VM_2102_Akquise 151
289 TS_DE_VM_2102_Kick Ass Corona Challenge 140
264 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 134
252 TS_DE_VM_2007_Divide&Conquer_München 126
240 TS_DE_VM_2003_Sales Challenge 125

b3d keda 3radt el 3wamed eli fel mot3'ier x4 bst5dam el function columns 34an at2ked eno mas7 3amod el conversion fa 2al en gwah 3amoden campaign & Number of signed offers¶

.columns --> de function bst5demha law 3awez a3red asma2 el 3wamed eli gwa mot3'ier mo3ian¶

In [79]:
x5.columns
Out[79]:
Index(['campaign', 'Number of signed offers'], dtype='object')

ana hena rasmt column bar chart lel mot3'ier x4 we 7atet fel x el 3amod el nusy campaign we 7atet fel y el 3amod el rakmy conversion we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh The optimal campaigns for increasing customer size¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [80]:
px.bar(x5,x='campaign',y='Number of signed offers',text_auto='.2s',width=1200,height=600,title='The optimal campaigns for increasing customer size')

7- Define the campaigns due to Customers who have contracts ?¶

hena 3awez el 7mlat el e3lania lel 3omlla eli lehom 32od bs¶

iloc[,] : de e5tsar le integer location we de bst5demha lma akon 3awez ageb a3meda mo3iana we de bta5od sfof we index el a3meda¶

dropna() : de bt4el el NaN y3ni ay kiam fare3'a y3ni ay 0 aw ay nulls¶

ana hena 3awez ageb el 7mlat el e3lania eli feha 3omla2 lehom contracts bs y3ni el 3omla2 eli mado 32od bs fa hageb el data eli t5os el 7mlat el e3lania wel 32od fa 3amlt mot3'ier esmo status we 7atet gwah kol el ssfof le 3amod el campaign eli rakm el index bta3o 3 we men awel 3amod el 'CONTRACTSTATUS_M1' l7ad 3amod el 'CONTRACTSTATUS_M12' y3ni men awel el index 16 l7ad 27 we msa7t el nulls fa 3amlt mot3'ier esmo status 2olt bisawy kol el sfof bta3et el 3wamed eli rakm el index bt3hom bisawy 3 we 16 we 17 we 18 we 19 we 20 we 21 we 22 we 23 we 24 we 25 we 26 we 27 eli gwa el mot3'ier data eli feh el data bt3ty bst5dam el function iloc[,]¶

In [81]:
status=data.iloc[:,[3,16,17,18,19,20,21,22,23,24,25,26,27]]
status
Out[81]:
campaign CONTRACTSTATUS_M1 CONTRACTSTATUS_M2 CONTRACTSTATUS_M3 CONTRACTSTATUS_M4 CONTRACTSTATUS_M5 CONTRACTSTATUS_M6 CONTRACTSTATUS_M7 CONTRACTSTATUS_M8 CONTRACTSTATUS_M9 CONTRACTSTATUS_M10 CONTRACTSTATUS_M11 CONTRACTSTATUS_M12
0 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 BKD_DE_VM_2008_Akquise 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 13 columns

status.dropna(inplace=True) --> de function btst5dma 34an ams7 el nulls¶

fa ana msa7t el nulls eli fel mot3'ier status 34an ana 3awez bs eli 7mlat el e3lania eli lehom 32od¶

In [82]:
status.dropna(inplace=True)
status
C:\Users\Mazen Sabry\AppData\Local\Temp\ipykernel_17176\1056499725.py:1: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

Out[82]:
campaign CONTRACTSTATUS_M1 CONTRACTSTATUS_M2 CONTRACTSTATUS_M3 CONTRACTSTATUS_M4 CONTRACTSTATUS_M5 CONTRACTSTATUS_M6 CONTRACTSTATUS_M7 CONTRACTSTATUS_M8 CONTRACTSTATUS_M9 CONTRACTSTATUS_M10 CONTRACTSTATUS_M11 CONTRACTSTATUS_M12
0 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 BKD_DE_VM_2008_Akquise 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
89808 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89809 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89810 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89811 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
90084 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

7020 rows × 13 columns

melt de bt3mel unpivot other columns¶

melt(,id_vars='',value_vars=[['','','']],var_name='',value_name='')¶

melt(elmot3'ier eli gwah el data,id_vars='el 3amod eli 3awez asbeto',value_vars=elmot3'ier eli gwah el data[['el3amod elawel eli 3awez a3melo ezaba',''el3amod eltany eli 3awez a3melo ezaba',''el3amod eltalet eli 3awez a3melo ezaba']],var_name='esm el3amod eli 7asl feh el ezaba',value_name='esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba')¶

AWEL TARE2A eni fel value_vars hst5dem function iloc 34an a3mel ezaba lel 3wamed 3n tare2 rakm el index bt3hom : fa 3amlt mot3'ier esmo status we 2olt bisawy melt y3ni ezaba lel mot3'ier status eli gwah el gdwal we fel id_vars 7atet el 3amod eli 3awez asbeto eli hwa hena campaign we fel value_vars 7atet el3wamed eli 3awez a3melhom ezaba fa 2olt a3mel ezaba le kol el sfof lel 3amod el tany eli rakm el index bta3o bisawy 1 l7ad 2a5er 3amod y3ni a3mel ezaba le 3wamed men awel el 3amod CONTRACTSTATUS_M1 l7ad el 3amod CONTRACTSTATUS_M12 we fel var_name 7atet esm el3amod eli 7asl feh el ezaba eli hwa hena mslan ha5leh month we fel value_name 7atet esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba eli hwa hena mslan ha5leh state¶

In [83]:
status=pd.melt(status,id_vars='campaign',value_vars=status.iloc[:,1:],var_name='month',value_name='state')
status
Out[83]:
campaign month state
0 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
1 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
2 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
3 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
4 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
... ... ... ...
84235 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84236 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84237 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84238 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84239 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0

84240 rows × 3 columns

loc[,] --> de bst54demha lma akon 3awez ageb a3meda mo3iana we de bta5od sfof we asma2 el a3meda¶

dropna() : de bt4el el NaN y3ni ay kiam fare3'a y3ni ay 0 aw ay nulls¶

ana hena 3awez ageb el 7mlat el e3lania eli feha 3omla2 lehom contracts bs y3ni el 3omla2 eli mado 32od bs fa hageb el data eli t5os el 7mlat el e3lania wel 32od fa 3amlt mot3'ier esmo status2 we 7atet gwah kol el sfof le 3amod el campaign we 3amod el CONTRACTSTATUS_M1 we 3amod el CONTRACTSTATUS_M2 we 3amod el CONTRACTSTATUS_M3 we 3amod el CONTRACTSTATUS_M4 we 3amod el CONTRACTSTATUS_M5 we 3amod el CONTRACTSTATUS_M6 we 3amod el CONTRACTSTATUS_M7 we 3amod el CONTRACTSTATUS_M8 we 3amod el CONTRACTSTATUS_M9 we 3amod el CONTRACTSTATUS_M10 we 3amod el CONTRACTSTATUS_M11 we 3amod el CONTRACTSTATUS_M12 eli gwa el mot3'ier data eli feh el data bt3ty bst5dam el function loc[,]¶

In [84]:
status2=data.loc[:,['campaign','CONTRACTSTATUS_M1','CONTRACTSTATUS_M2','CONTRACTSTATUS_M3','CONTRACTSTATUS_M4','CONTRACTSTATUS_M5','CONTRACTSTATUS_M6','CONTRACTSTATUS_M7','CONTRACTSTATUS_M8','CONTRACTSTATUS_M9','CONTRACTSTATUS_M10','CONTRACTSTATUS_M11','CONTRACTSTATUS_M12']]
status2
Out[84]:
campaign CONTRACTSTATUS_M1 CONTRACTSTATUS_M2 CONTRACTSTATUS_M3 CONTRACTSTATUS_M4 CONTRACTSTATUS_M5 CONTRACTSTATUS_M6 CONTRACTSTATUS_M7 CONTRACTSTATUS_M8 CONTRACTSTATUS_M9 CONTRACTSTATUS_M10 CONTRACTSTATUS_M11 CONTRACTSTATUS_M12
0 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 BKD_DE_VM_2008_Akquise 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 13 columns

status2.dropna(inplace=True) --> de function btst5dma 34an ams7 el nulls¶

fa ana msa7t el nulls eli fel mot3'ier status2 34an ana 3awez bs eli 7mlat el e3lania eli lehom 32od¶

In [85]:
status2.dropna(inplace=True)
status2
Out[85]:
campaign CONTRACTSTATUS_M1 CONTRACTSTATUS_M2 CONTRACTSTATUS_M3 CONTRACTSTATUS_M4 CONTRACTSTATUS_M5 CONTRACTSTATUS_M6 CONTRACTSTATUS_M7 CONTRACTSTATUS_M8 CONTRACTSTATUS_M9 CONTRACTSTATUS_M10 CONTRACTSTATUS_M11 CONTRACTSTATUS_M12
0 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 BKD_DE_VM_2008_Akquise 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
89808 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89809 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89810 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89811 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
90084 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

7020 rows × 13 columns

melt de bt3mel unpivot other columns¶

melt(,id_vars='',value_vars=[['','','']],var_name='',value_name='')¶

melt(elmot3'ier eli gwah el data,id_vars='el 3amod eli 3awez asbeto',value_vars=elmot3'ier eli gwah el data[['el3amod elawel eli 3awez a3melo ezaba',''el3amod eltany eli 3awez a3melo ezaba',''el3amod eltalet eli 3awez a3melo ezaba']],var_name='esm el3amod eli 7asl feh el ezaba',value_name='esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba')¶

TANY TARE2A eni fel value_vars hst5dem function loc 34an a3mel ezaba lel 3wamed 3n tare2 asma2 el a3meda : fa 3amlt mot3'ir esmo status2 we 2olt bisway melt y3ni ezaba lel mot3'ier status2 eli gwah el gdwal we fel id_vars 7atet el 3amod eli 3awez asbeto eli hwa hena campaign we fel value_vars 7atet kol el sfof we asma2 el 3wamed eli 3awez a3mlehom ezaba we fel var_name 7atet esm el3amod eli 7asl feh el ezaba eli hwa hena mslan ha5leh month we fel value_name 7atet esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba eli hwa hena mslan ha5leh state¶

In [86]:
status2=pd.melt(status2,id_vars='campaign',value_vars=status2.loc[:,['CONTRACTSTATUS_M1','CONTRACTSTATUS_M2','CONTRACTSTATUS_M3','CONTRACTSTATUS_M4','CONTRACTSTATUS_M5','CONTRACTSTATUS_M6','CONTRACTSTATUS_M7','CONTRACTSTATUS_M8','CONTRACTSTATUS_M9','CONTRACTSTATUS_M10','CONTRACTSTATUS_M11','CONTRACTSTATUS_M12']],var_name='month',value_name='state')
status2
Out[86]:
campaign month state
0 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
1 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
2 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
3 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
4 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
... ... ... ...
84235 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84236 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84237 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84238 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84239 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0

84240 rows × 3 columns

ana hena ktatbt asma2 el a3mda eli 3awez agebhom 3latol mn 3'er mst5dem loc[,] wla iloc[,]¶

dropna() : de bt4el el NaN y3ni ay kiam fare3'a y3ni ay 0 aw ay nulls¶

ana hena 3awez ageb el 7mlat el e3lania eli feha 3omla2 lehom contracts bs y3ni el 3omla2 eli mado 32od bs fa hageb el data eli t5os el 7mlat el e3lania wel 32od fa 3amlt mot3'ier esmo status2 we 7atet gwah 3amod el campaign we 3amod el CONTRACTSTATUS_M1 we 3amod el CONTRACTSTATUS_M2 we 3amod el CONTRACTSTATUS_M3 we 3amod el CONTRACTSTATUS_M4 we 3amod el CONTRACTSTATUS_M5 we 3amod el CONTRACTSTATUS_M6 we 3amod el CONTRACTSTATUS_M7 we 3amod el CONTRACTSTATUS_M8 we 3amod el CONTRACTSTATUS_M9 we 3amod el CONTRACTSTATUS_M10 we 3amod el CONTRACTSTATUS_M11 we 3amod el CONTRACTSTATUS_M12 eli gwa el mot3'ier data eli feh el data bt3ty¶

In [87]:
status3=data[['campaign','CONTRACTSTATUS_M1','CONTRACTSTATUS_M2','CONTRACTSTATUS_M3','CONTRACTSTATUS_M4','CONTRACTSTATUS_M5','CONTRACTSTATUS_M6','CONTRACTSTATUS_M7','CONTRACTSTATUS_M8','CONTRACTSTATUS_M9','CONTRACTSTATUS_M10','CONTRACTSTATUS_M11','CONTRACTSTATUS_M12']]
status3
Out[87]:
campaign CONTRACTSTATUS_M1 CONTRACTSTATUS_M2 CONTRACTSTATUS_M3 CONTRACTSTATUS_M4 CONTRACTSTATUS_M5 CONTRACTSTATUS_M6 CONTRACTSTATUS_M7 CONTRACTSTATUS_M8 CONTRACTSTATUS_M9 CONTRACTSTATUS_M10 CONTRACTSTATUS_M11 CONTRACTSTATUS_M12
0 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 BKD_DE_VM_2008_Akquise 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 13 columns

status3.dropna(inplace=True) --> de function btst5dma 34an ams7 el nulls¶

fa ana msa7t el nulls eli fel mot3'ier status3 34an ana 3awez bs eli 7mlat el e3lania eli lehom 32od¶

In [88]:
status3.dropna(inplace=True)
status3
C:\Users\Mazen Sabry\AppData\Local\Temp\ipykernel_17176\40424018.py:1: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

Out[88]:
campaign CONTRACTSTATUS_M1 CONTRACTSTATUS_M2 CONTRACTSTATUS_M3 CONTRACTSTATUS_M4 CONTRACTSTATUS_M5 CONTRACTSTATUS_M6 CONTRACTSTATUS_M7 CONTRACTSTATUS_M8 CONTRACTSTATUS_M9 CONTRACTSTATUS_M10 CONTRACTSTATUS_M11 CONTRACTSTATUS_M12
0 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3 BKD_DE_VM_2008_Akquise 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 BKD_DE_VM_2008_Akquise 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
... ... ... ... ... ... ... ... ... ... ... ... ... ...
89808 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89809 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89810 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
89811 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
90084 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

7020 rows × 13 columns

melt de bt3mel unpivot other columns¶

melt(,id_vars='',value_vars=[['','','']],var_name='',value_name='')¶

melt(elmot3'ier eli gwah el data,id_vars='el 3amod eli 3awez asbeto',value_vars=elmot3'ier eli gwah el data[['el3amod elawel eli 3awez a3melo ezaba',''el3amod eltany eli 3awez a3melo ezaba',''el3amod eltalet eli 3awez a3melo ezaba']],var_name='esm el3amod eli 7asl feh el ezaba',value_name='esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba')¶

TALET TARE2A eni fel value_vars hkteb esm el 3wamed eli 3awez a3melhom ezaba 3latol : fa 3amlt mot3'ier esmo status3 we 2olt bisawy melt y3ni ezaba lel mot3'ier status3 eli gwah el gdwal we fel id_vars 7atet el 3amod eli 3awez asbeto eli hwa hena campaign we fel value_vars 7atet asamy el3wamed eli 3awez a3melhom ezaba we fel var_name 7atet esm el3amod eli 7asl feh el ezaba eli hwa hena mslan ha5leh month we fel value_name 7atet esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba eli hwa hena mslan ha5leh state¶

In [89]:
status3=pd.melt(status3,id_vars='campaign',value_vars=status3[['CONTRACTSTATUS_M1','CONTRACTSTATUS_M2','CONTRACTSTATUS_M3','CONTRACTSTATUS_M4','CONTRACTSTATUS_M5','CONTRACTSTATUS_M6','CONTRACTSTATUS_M7','CONTRACTSTATUS_M8','CONTRACTSTATUS_M9','CONTRACTSTATUS_M10','CONTRACTSTATUS_M11','CONTRACTSTATUS_M12']],var_name='month',value_name='state')
status3
Out[89]:
campaign month state
0 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
1 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
2 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
3 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
4 BKD_DE_VM_2008_Akquise CONTRACTSTATUS_M1 1.0
... ... ... ...
84235 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84236 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84237 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84238 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0
84239 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... CONTRACTSTATUS_M12 0.0

84240 rows × 3 columns

str.replace(,) : de btestbdel 7aga adema be 7aga gdeda fa bta5od circle brackets gwaha¶

AWEL TARE2A eni 5alet 3amod el month eli fel mot3'ier status2 y3red bs el rakm bst5dam el function str.replace('','') : fa estbdelt klmet 'CONTRACTSTATUS_M' we 7atet bdlha fady¶

In [90]:
status2['month']=status['month'].str.replace('CONTRACTSTATUS_M','')
status2
Out[90]:
campaign month state
0 BKD_DE_VM_2008_Akquise 1 1.0
1 BKD_DE_VM_2008_Akquise 1 1.0
2 BKD_DE_VM_2008_Akquise 1 1.0
3 BKD_DE_VM_2008_Akquise 1 1.0
4 BKD_DE_VM_2008_Akquise 1 1.0
... ... ... ...
84235 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84236 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84237 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84238 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84239 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0

84240 rows × 3 columns

str.split() : de btefsel 3n tare2 el 7aga eli gwa el akwas y3ni law 2olt str.split(' ') fa hifsel 3n tare2 el msafa we law 2olt str.split('/') hifsel 3n tare2 el 4arta el maila de we hakza¶

str.get() : de m3naha hatli rakm el index eli gwa el akwas y3ni law 2olt str.get(0) fa higebli awel index eli rakmo 0 we law 2olt str.get(1) higebli tany index eli rakmo 1 we hakza¶

str.split('').str.get() : de m3naha eno hifsel 3n tare2 el mwgod gwa el akwas bta3et split('') we hi3red eli rakm el index bta3o gwa el akwas bta3et get()¶

TANY TARE2A eni 5alet 3amod el month eli fel mot3'ier status y3red bs el rakm bst5dam el function str.split('M').str.get(1) : y3ni 2oltelo afsel mn awel 7arf el M l7ad el 2a5er fa fasl klmet 'CONTRACTSTATUS_M' 3n el rakm eli b3dha fa beltaly klmet 'CONTRACTSTATUS_M' b2a rakm el index bt3ha 0 wel rakm b2a rakm el index bta3o 1 fa 3radt eli rakm el index bta3o 1 fa 3ard el arkam bs¶

In [91]:
status['month']=status['month'].str.split('M').str.get(1)
status
Out[91]:
campaign month state
0 BKD_DE_VM_2008_Akquise 1 1.0
1 BKD_DE_VM_2008_Akquise 1 1.0
2 BKD_DE_VM_2008_Akquise 1 1.0
3 BKD_DE_VM_2008_Akquise 1 1.0
4 BKD_DE_VM_2008_Akquise 1 1.0
... ... ... ...
84235 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84236 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84237 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84238 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0
84239 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 12 0.0

84240 rows × 3 columns

ana hena est5demt el function info() 34an a4of el data types bto3 el 3wamed eli fel gdwal eli gwa el mot3'ier status¶

In [92]:
status.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 84240 entries, 0 to 84239
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   campaign  84240 non-null  object 
 1   month     84240 non-null  object 
 2   state     84240 non-null  float64
dtypes: float64(1), object(2)
memory usage: 1.9+ MB

ana hena 3awez a3raf 3dad el esfar wel w7aied fe kol 4ahr y3ni 3awez a3rf kam 3amel fas5 el 3a2d we kam 3amel fedl mot3aked fe kol 4ahr fa 3amlt mot3'ier esmo test bisawy mekdar tekrar el state fe kol month wel 3amod el gded sameto 'Number of signed contracts & terminated contracts in each month' we rtebto men 7es 3amod el month tnazoli fa hla2y eno mrtebho4 mzbot 34an el data type bta3et 3amod el month kanet object y3ni nus fa hwa mesh ader yrteb el 3amod tnazoli¶

In [93]:
test=status[['month','state']].value_counts().reset_index(name='Number of signed contracts & terminated contracts in each month').sort_values(by='month',ascending=False)
test
Out[93]:
month state Number of signed contracts & terminated contracts in each month
17 9 1.0 2673
6 9 0.0 4347
7 8 0.0 4120
16 8 1.0 2900
14 7 1.0 3123
9 7 0.0 3897
12 6 1.0 3377
11 6 0.0 3643
10 5 1.0 3713
13 5 0.0 3307
8 4 1.0 4113
15 4 0.0 2907
5 3 1.0 4646
18 3 0.0 2374
22 2 0.0 1753
1 2 1.0 5267
2 12 0.0 5116
21 12 1.0 1904
3 11 0.0 4944
20 11 1.0 2076
4 10 0.0 4715
19 10 1.0 2305
0 1 1.0 6069
23 1 0.0 951

astype('int64') --> de function bst5dmha 34an a3'ier el datatype le int64 numeric y3ni rakmy¶

ana hena 7welt el data type bta3et 3amod el month le int64 34an yeb2a numeric fa lma agy artebo tnazoli ytrteb mzbot¶

In [94]:
status['month']=status['month'].astype('int64')
status.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 84240 entries, 0 to 84239
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   campaign  84240 non-null  object 
 1   month     84240 non-null  int64  
 2   state     84240 non-null  float64
dtypes: float64(1), int64(1), object(1)
memory usage: 1.9+ MB

ana hena 3awez a3raf 3dad el esfar wel w7aied fe kol 4ahr y3ni 3awez a3rf kam 3amel fas5 el 3a2d we kam 3amel fedl mot3aked fe kol 4ahr fa 3amlt mot3'ier esmo acc bisawy mekdar tekrar el state fe kol month wel 3amod el gded sameto 'Number of signed contracts & terminated contracts in each month' we rtebto men 7es 3amod el month tnazoli fa hitrteb mzbot 34an el data type bta3et 3amod el month b2et numeric fa 2ader yrtebo tnazoli 3adi¶

In [95]:
acc=status[['month','state']].value_counts().reset_index(name='Number of signed contracts & terminated contracts in each month').sort_values(by='month',ascending=False)
acc
Out[95]:
month state Number of signed contracts & terminated contracts in each month
21 12 1.0 1904
2 12 0.0 5116
3 11 0.0 4944
20 11 1.0 2076
4 10 0.0 4715
19 10 1.0 2305
6 9 0.0 4347
17 9 1.0 2673
7 8 0.0 4120
16 8 1.0 2900
14 7 1.0 3123
9 7 0.0 3897
12 6 1.0 3377
11 6 0.0 3643
13 5 0.0 3307
10 5 1.0 3713
15 4 0.0 2907
8 4 1.0 4113
18 3 0.0 2374
5 3 1.0 4646
1 2 1.0 5267
22 2 0.0 1753
0 1 1.0 6069
23 1 0.0 951

ana hrsem line chart 34an a3ber 3n el slasel el zmnia fa yeb2a m3aya line lel 3omala eli fs5o el 3a2d 3la mdar el 4hor we yeb2a m3aya line lel 3omala eli fedlo mot3kden 3la mdar el 4hor fa el legend bta3y hena hib2a 3amod el state eli hy3rfny el 3amel lesa mot3aked wla fas5 el 3a2d fa law 1 yeb2a lesa mot3aked we law 0 yeb2a fas5 el 3a2d we fel x ha7ot 3amod el month eli feh el 4hor we fel y ha7ot el 3amod el gded eli feh mkdar tekrar kol state fe kol month y3ni el 3amod eli feh 3dad el 3omala eli fedlo mot3kden we 3dad el 3omala eli fs5o el 3a2d fe kol 4ahr¶

ana hena rasmt Line chart lel mot3'ier acc we 7atet fel x 3amod el "month" we 7atet fel y 3amod el "Number of signed contracts & terminated contracts in each month" we 7atet fel color 3amod el state 34an yeb2a hwa el legend bta3y eli by3rfny el 3amel lesa mot3aked wla fas5 el 3a2d fa law 1 yeb2a lesa mot3aked we law 0 yeb2a fas5 el 3a2d we 5alet 3ard el chart 1100 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo Number of signed Contracts & terminated contracts in each month" we 3amlt marker lel 5tot, fa hla2y en bmror el zamn el 3omla2 bifs5o el 3a2d y3ni mslan fe 4ahr wa7ed 3dad el 3omla eli fas5o 951 we 3dad el 3omla eli fedlo mot3kden m3aya 6069 we fe 4ahr 2 3dad el 3omla eli fas5o 1753 we 3dad el 3omla eli fedlo mot3kden m3aya 5267 we fe 4ahr 3 3dad el 3omla eli fas5o 2374 we 3dad el 3omla eli fedlo mot3kden m3aya 4646 we fe 2a5er 4ahr eli hwa 4ahr 12 3dad el 3omla eli fas5o el 3a2d zad gedan l7ad ma weslo 5116 we 3dad el 3omla eli fedlo mot3kden m3aya 2lo gedan l7ad ma weslo 1904¶

In [96]:
px.line(acc,x='month',y='Number of signed contracts & terminated contracts in each month',color='state',width=1100,height=600,title='Number of signed Contracts & terminated contracts in each month',markers=True)
In [97]:
data
Out[97]:
SEGMENT campaignstartdate campaignenddate campaign progress STATUS contacted conversion cr2 basis REJECTIONREASON ... Classified UndisRev M10 Classified Rev M11 Classified UndisRev M11 Classified Rev M12 Classified UndisRev M12 Classified Rev M13 Classified UndisRev M13 Classified Rev M14 Classified UndisRev M14 Campaign_Duration
0 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 69.9 119.0 69.9 119.0 69.9 119.0 69.9 119.0 66 days
1 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 66 days
2 Small Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 66 days
3 Franchised Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 66 days
4 Independent Dealers 2020-07-31 2020-10-05 BKD_DE_VM_2008_Akquise 3 completed Offer Signed 1 1 1 NaN ... 119.0 119.0 119.0 139.0 139.0 139.0 139.0 139.0 139.0 66 days
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90155 Independent Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90156 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 No Interest ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90157 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 2 in progress Not Reached 0 0 0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days
90158 Schotterplatz Dealers 2021-07-29 2021-08-19 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... 3 completed Rejected 1 0 1 Export Business ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 21 days

90159 rows × 78 columns

8- Which campaign/campaign offer/sales channel would be the optimal to use If the primary goal is to increase revenue ?¶

el so2al hena by2ol anhy 7mla e3lania bete5ale 3dad el arba7 yzed?¶

el tfker el manteky eni ageb mgmo3 el arba7 b3d el 5asm le kol campaign 34an a3rf anhy 7amla e3lania bete5ale 3dad el arba7 yzed¶

iloc[,] : de e5tsar le integer location we de bst5demha lma akon 3awez ageb a3meda mo3iana we de bta5od sfof we index el a3meda¶

dropna() : de bt4el el NaN y3ni ay kiam fare3'a y3ni ay 0 aw ay nulls¶

ana hena 3awez ageb el 7mlat el e3lania eli bet5ali el arba7 tzed fa hageb el data eli t5os el 7mlat el e3lania wel arba7 b3d el 5asm fa 3amlt mot3'ier esmo revenue we 7atet gwah kol el sfof le 3amod el campaign eli rakm el index bta3o 3 we men awel 3amod el 'Classified Rev M0' l7ad 3amod el 'Classified Rev M14' y3ni men awel el index 47 l7ad 75 fa 3amlt mot3'ier esmo revenue 2olt bisawy iloc kol el sfof bta3et el 3wamed eli rakm el index bt3hom bisawy 3 we 47 we 49 we 51 we 53 we 55 we 57 we 59 61 we 63 we 65 we 67 we 69 we 71 we 73 we 75 eli gwa el mot3'ier data eli feh el data bt3ty bst5dam el function iloc[,]¶

In [98]:
revenue=data.iloc[:,[3,47,49,51,53,55,57,59,61,63,65,67,69,71,73,75]]
revenue
Out[98]:
campaign Classified Rev M0 Classified Rev M1 Classified Rev M2 Classified Rev M3 Classified Rev M4 Classified Rev M5 Classified Rev M6 Classified Rev M7 Classified Rev M8 Classified Rev M9 Classified Rev M10 Classified Rev M11 Classified Rev M12 Classified Rev M13 Classified Rev M14
0 BKD_DE_VM_2008_Akquise 99.50 99.5 99.5 99.5 99.5 99.5 199.0 199.0 199.0 199.0 69.9 69.9 69.9 69.9 69.9
1 BKD_DE_VM_2008_Akquise 59.50 59.5 59.5 59.5 59.5 59.5 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 BKD_DE_VM_2008_Akquise 29.75 59.5 59.5 59.5 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
3 BKD_DE_VM_2008_Akquise 40.30 59.5 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 BKD_DE_VM_2008_Akquise 57.51 59.5 59.5 59.5 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 139.0 139.0 139.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 16 columns

revenue.dropna(inplace=True) --> de function btst5dma 34an ams7 el nulls¶

fa ana msa7t el nulls eli fel mot3'ier revenue 34an ana 3awez bs eli 7mlat el e3lania eli lehom arba7 b3d el 5asm bs¶

In [99]:
revenue.dropna(inplace=True)
revenue
C:\Users\Mazen Sabry\AppData\Local\Temp\ipykernel_17176\4201926819.py:1: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

Out[99]:
campaign Classified Rev M0 Classified Rev M1 Classified Rev M2 Classified Rev M3 Classified Rev M4 Classified Rev M5 Classified Rev M6 Classified Rev M7 Classified Rev M8 Classified Rev M9 Classified Rev M10 Classified Rev M11 Classified Rev M12 Classified Rev M13 Classified Rev M14
0 BKD_DE_VM_2008_Akquise 99.50 99.5 99.50 99.50 99.5 99.5 199.0 199.0 199.0 199.0 69.9 69.9 69.9 69.9 69.9
2 BKD_DE_VM_2008_Akquise 29.75 59.5 59.50 59.50 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
4 BKD_DE_VM_2008_Akquise 57.51 59.5 59.50 59.50 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 139.0 139.0 139.0
10 BKD_DE_VM_2008_Akquise 138.00 64.5 89.00 51.60 38.7 77.4 64.5 89.0 89.0 12.9 89.0 64.5 38.7 38.7 0.0
11 BKD_DE_VM_2008_Akquise 18.00 139.5 139.50 139.50 139.5 139.5 279.0 279.0 279.0 279.0 279.0 279.0 279.0 279.0 279.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
56432 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 98.0 132.3 186.2 88.2 68.6 73.5 176.4 189.0 189.0 189.0 189.0
56434 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 33.80 33.80 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0
56438 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 132.3 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0
56441 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 189.0 189.0 189.0 132.3 189.0 189.0 151.9 9.9 189.0 189.0 189.0
57778 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 0.00 0.0 33.80 29.40 78.4 68.6 53.9 78.4 39.2 39.2 68.6 69.3 89.0 79.2 89.0

1352 rows × 16 columns

b3d keda 3awez a3mel unpivot lel 3wamed eli feha el arba4 b3d el 5asm le kol el 4hor b7es ykono fe 3amod wa7ed¶

melt de bt3mel unpivot other columns¶

melt(,id_vars='',value_vars=[['','','']],var_name='',value_name='')¶

melt(elmot3'ier eli gwah el data,id_vars='el 3amod eli 3awez asbeto',value_vars=elmot3'ier eli gwah el data[['el3amod elawel eli 3awez a3melo ezaba',''el3amod eltany eli 3awez a3melo ezaba',''el3amod eltalet eli 3awez a3melo ezaba']],var_name='esm el3amod eli 7asl feh el ezaba',value_name='esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba')¶

AWEL TARE2A eni fel value_vars hst5dem function iloc 34an a3mel ezaba lel 3wamed 3n tare2 rakm el index bt3hom : fa 3amlt mot3'ier esmo revenue we 2olt bisawy melt y3ni ezaba lel mot3'ier revenue eli gwah el gdwal we fel id_vars 7atet el 3amod eli 3awez asbeto eli hwa hena campaign we fel value_vars 7atet el3wamed eli 3awez a3melhom ezaba fa 2olt a3mel ezaba le kol el sfof lel 3amod el tany eli rakm el index bta3o bisawy 1 l7ad 2a5er 3amod y3ni a3mel ezaba le 3wamed men awel el 3amod Classified Rev M0 l7ad el 3amod Classified Rev M14 we fel var_name 7atet esm el3amod eli 7asl feh el ezaba eli hwa hena mslan ha5leh month we fel value_name 7atet esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba eli hwa hena mslan ha5leh Total¶

In [100]:
revenue=pd.melt(revenue,id_vars='campaign',value_vars=revenue.iloc[:,1:],var_name='month',value_name='Total')
revenue
Out[100]:
campaign month Total
0 BKD_DE_VM_2008_Akquise Classified Rev M0 99.50
1 BKD_DE_VM_2008_Akquise Classified Rev M0 29.75
2 BKD_DE_VM_2008_Akquise Classified Rev M0 57.51
3 BKD_DE_VM_2008_Akquise Classified Rev M0 138.00
4 BKD_DE_VM_2008_Akquise Classified Rev M0 18.00
... ... ... ...
20275 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20276 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 89.00
20277 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20278 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland Classified Rev M14 89.00

20280 rows × 3 columns

loc[,] --> de bst54demha lma akon 3awez ageb a3meda mo3iana we de bta5od sfof we asma2 el a3meda¶

ana hena 3awez ageb el 7mlat el e3lania eli bet5ali el arba7 tzed fa hageb el data eli t5os el 7mlat el e3lania wel arba7 b3d el 5asm fa 3amlt mot3'ier esmo revenue2 we 7atet gwah kol el sfof le 3amod el campaign we 3amod el Classified Rev M0 we 3amod el Classified Rev M1 we 3amod el Classified Rev M2 we 3amod el Classified Rev M3 we 3amod el Classified Rev M4 we 3amod el Classified Rev M5 we 3amod el Classified Rev M6 we 3amod el Classified Rev M7 we 3amod el Classified Rev M8 we 3amod el Classified Rev M9 we 3amod el Classified Rev M10 we 3amod el Classified Rev M11 we 3amod el Classified Rev M12 we 3amod el Classified Rev M13 we 3amod el Classified Rev M14 eli gwa el mot3'ier data eli feh el data bt3ty bst5dam el function loc[,]¶

In [101]:
revenue2=data.loc[:,['campaign','Classified Rev M0','Classified Rev M1','Classified Rev M2','Classified Rev M3','Classified Rev M4','Classified Rev M5','Classified Rev M6','Classified Rev M7','Classified Rev M8','Classified Rev M9','Classified Rev M10','Classified Rev M11','Classified Rev M12','Classified Rev M13','Classified Rev M14']]
revenue2
Out[101]:
campaign Classified Rev M0 Classified Rev M1 Classified Rev M2 Classified Rev M3 Classified Rev M4 Classified Rev M5 Classified Rev M6 Classified Rev M7 Classified Rev M8 Classified Rev M9 Classified Rev M10 Classified Rev M11 Classified Rev M12 Classified Rev M13 Classified Rev M14
0 BKD_DE_VM_2008_Akquise 99.50 99.5 99.5 99.5 99.5 99.5 199.0 199.0 199.0 199.0 69.9 69.9 69.9 69.9 69.9
1 BKD_DE_VM_2008_Akquise 59.50 59.5 59.5 59.5 59.5 59.5 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 BKD_DE_VM_2008_Akquise 29.75 59.5 59.5 59.5 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
3 BKD_DE_VM_2008_Akquise 40.30 59.5 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 BKD_DE_VM_2008_Akquise 57.51 59.5 59.5 59.5 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 139.0 139.0 139.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 16 columns

revenue2.dropna(inplace=True) --> de function btst5dma 34an ams7 el nulls¶

fa ana msa7t el nulls eli fel mot3'ier revenue2 34an ana 3awez bs el 7mlat el e3lania eli lehom arba7 b3d el 5asm¶

In [102]:
revenue2.dropna(inplace=True)
revenue2
Out[102]:
campaign Classified Rev M0 Classified Rev M1 Classified Rev M2 Classified Rev M3 Classified Rev M4 Classified Rev M5 Classified Rev M6 Classified Rev M7 Classified Rev M8 Classified Rev M9 Classified Rev M10 Classified Rev M11 Classified Rev M12 Classified Rev M13 Classified Rev M14
0 BKD_DE_VM_2008_Akquise 99.50 99.5 99.50 99.50 99.5 99.5 199.0 199.0 199.0 199.0 69.9 69.9 69.9 69.9 69.9
2 BKD_DE_VM_2008_Akquise 29.75 59.5 59.50 59.50 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
4 BKD_DE_VM_2008_Akquise 57.51 59.5 59.50 59.50 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 139.0 139.0 139.0
10 BKD_DE_VM_2008_Akquise 138.00 64.5 89.00 51.60 38.7 77.4 64.5 89.0 89.0 12.9 89.0 64.5 38.7 38.7 0.0
11 BKD_DE_VM_2008_Akquise 18.00 139.5 139.50 139.50 139.5 139.5 279.0 279.0 279.0 279.0 279.0 279.0 279.0 279.0 279.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
56432 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 98.0 132.3 186.2 88.2 68.6 73.5 176.4 189.0 189.0 189.0 189.0
56434 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 33.80 33.80 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0
56438 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 132.3 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0
56441 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 189.0 189.0 189.0 132.3 189.0 189.0 151.9 9.9 189.0 189.0 189.0
57778 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 0.00 0.0 33.80 29.40 78.4 68.6 53.9 78.4 39.2 39.2 68.6 69.3 89.0 79.2 89.0

1352 rows × 16 columns

melt de bt3mel unpivot other columns¶

melt(,id_vars='',value_vars=[['','','']],var_name='',value_name='')¶

melt(elmot3'ier eli gwah el data,id_vars='el 3amod eli 3awez asbeto',value_vars=elmot3'ier eli gwah el data[['el3amod elawel eli 3awez a3melo ezaba',''el3amod eltany eli 3awez a3melo ezaba',''el3amod eltalet eli 3awez a3melo ezaba']],var_name='esm el3amod eli 7asl feh el ezaba',value_name='esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba')¶

TANY TARE2A eni fel value_vars hst5dem function loc 34an a3mel ezaba lel 3wamed 3n tare2 asma2 el a3meda : fa 3amlt mot3'ir esmo revenue2 we 2olt bisway melt y3ni ezaba lel mot3'ier revenue2 eli gwah el gdwal we fel id_vars 7atet el 3amod eli 3awez asbeto eli hwa hena campaign we fel value_vars 7atet kol el sfof we asma2 el 3wamed eli 3awez a3mlehom ezaba we fel var_name 7atet esm el3amod eli 7asl feh el ezaba eli hwa hena mslan ha5leh month we fel value_name 7atet esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba eli hwa hena mslan ha5leh Total¶

In [103]:
revenue2=pd.melt(revenue2,id_vars='campaign',value_vars=revenue2.loc[:,['Classified Rev M0','Classified Rev M1','Classified Rev M2','Classified Rev M3','Classified Rev M4','Classified Rev M5','Classified Rev M6','Classified Rev M7','Classified Rev M8','Classified Rev M9','Classified Rev M10','Classified Rev M11','Classified Rev M12','Classified Rev M13','Classified Rev M14']],var_name='month',value_name='Total')
revenue2
Out[103]:
campaign month Total
0 BKD_DE_VM_2008_Akquise Classified Rev M0 99.50
1 BKD_DE_VM_2008_Akquise Classified Rev M0 29.75
2 BKD_DE_VM_2008_Akquise Classified Rev M0 57.51
3 BKD_DE_VM_2008_Akquise Classified Rev M0 138.00
4 BKD_DE_VM_2008_Akquise Classified Rev M0 18.00
... ... ... ...
20275 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20276 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 89.00
20277 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20278 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland Classified Rev M14 89.00

20280 rows × 3 columns

ana hena ktatbt asma2 el a3mda eli 3awez agebhom 3latol mn 3'er mst5dem loc[,] wla iloc[,]¶

dropna() : de bt4el el NaN y3ni ay kiam fare3'a y3ni ay 0 aw ay nulls¶

ana hena 3awez ageb el 7mlat el e3lania eli bet5ali el arba7 tzed fa hageb el data eli t5os el 7mlat el e3lania wel arba7 b3d el 5asm fa 3amlt mot3'ier esmo revenue3 we 7atet gwah 3amod el campaign we 3amod el Classified Rev M0 we 3amod el Classified Rev M1 we 3amod el Classified Rev M2 we 3amod el Classified Rev M3 we 3amod el Classified Rev M4 we 3amod el Classified Rev M5 we 3amod el Classified Rev M6 we 3amod el Classified Rev M7 we 3amod el Classified Rev M8 we 3amod el Classified Rev M9 we 3amod el Classified Rev M10 we 3amod el Classified Rev M11 we 3amod el Classified Rev M12 we 3amod el Classified Rev M13 we 3amod el Classified Rev M14 eli gwa el mot3'ier data eli feh el data bt3ty¶

In [104]:
revenue3=data[['campaign','Classified Rev M0','Classified Rev M1','Classified Rev M2','Classified Rev M3','Classified Rev M4','Classified Rev M5','Classified Rev M6','Classified Rev M7','Classified Rev M8','Classified Rev M9','Classified Rev M10','Classified Rev M11','Classified Rev M12','Classified Rev M13','Classified Rev M14']]
revenue3
Out[104]:
campaign Classified Rev M0 Classified Rev M1 Classified Rev M2 Classified Rev M3 Classified Rev M4 Classified Rev M5 Classified Rev M6 Classified Rev M7 Classified Rev M8 Classified Rev M9 Classified Rev M10 Classified Rev M11 Classified Rev M12 Classified Rev M13 Classified Rev M14
0 BKD_DE_VM_2008_Akquise 99.50 99.5 99.5 99.5 99.5 99.5 199.0 199.0 199.0 199.0 69.9 69.9 69.9 69.9 69.9
1 BKD_DE_VM_2008_Akquise 59.50 59.5 59.5 59.5 59.5 59.5 NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 BKD_DE_VM_2008_Akquise 29.75 59.5 59.5 59.5 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
3 BKD_DE_VM_2008_Akquise 40.30 59.5 0.0 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 BKD_DE_VM_2008_Akquise 57.51 59.5 59.5 59.5 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 139.0 139.0 139.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
90154 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90155 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90156 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90157 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90158 Webhelp_DE_VM_2108_RMS Attack Schotterplatz Fo... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

90159 rows × 16 columns

revenue3.dropna(inplace=True) --> de function btst5dma 34an ams7 el nulls¶

fa ana msa7t el nulls eli fel mot3'ier revenue3 34an ana 3awez bs el 7mlat el e3lania eli lehom arba7 b3d el 5asm¶

In [105]:
revenue3.dropna(inplace=True)
revenue3
C:\Users\Mazen Sabry\AppData\Local\Temp\ipykernel_17176\3159183598.py:1: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

Out[105]:
campaign Classified Rev M0 Classified Rev M1 Classified Rev M2 Classified Rev M3 Classified Rev M4 Classified Rev M5 Classified Rev M6 Classified Rev M7 Classified Rev M8 Classified Rev M9 Classified Rev M10 Classified Rev M11 Classified Rev M12 Classified Rev M13 Classified Rev M14
0 BKD_DE_VM_2008_Akquise 99.50 99.5 99.50 99.50 99.5 99.5 199.0 199.0 199.0 199.0 69.9 69.9 69.9 69.9 69.9
2 BKD_DE_VM_2008_Akquise 29.75 59.5 59.50 59.50 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0 119.0
4 BKD_DE_VM_2008_Akquise 57.51 59.5 59.50 59.50 59.5 59.5 119.0 119.0 119.0 119.0 119.0 119.0 139.0 139.0 139.0
10 BKD_DE_VM_2008_Akquise 138.00 64.5 89.00 51.60 38.7 77.4 64.5 89.0 89.0 12.9 89.0 64.5 38.7 38.7 0.0
11 BKD_DE_VM_2008_Akquise 18.00 139.5 139.50 139.50 139.5 139.5 279.0 279.0 279.0 279.0 279.0 279.0 279.0 279.0 279.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
56432 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 98.0 132.3 186.2 88.2 68.6 73.5 176.4 189.0 189.0 189.0 189.0
56434 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 33.80 33.80 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0 89.0
56438 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 132.3 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0 189.0
56441 TS_DE_VM_2009_Herbstchallenge 0.00 0.0 71.78 71.78 189.0 189.0 189.0 132.3 189.0 189.0 151.9 9.9 189.0 189.0 189.0
57778 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 0.00 0.0 33.80 29.40 78.4 68.6 53.9 78.4 39.2 39.2 68.6 69.3 89.0 79.2 89.0

1352 rows × 16 columns

b3d keda 3awez a3mel unpivot lel 3wamed eli feha el arba4 b3d el 5asm le kol el 4hor b7es ykono fe 3amod wa7ed¶

melt de bt3mel unpivot other columns¶

melt(,id_vars='',value_vars=[['','','']],var_name='',value_name='')¶

melt(elmot3'ier eli gwah el data,id_vars='el 3amod eli 3awez asbeto',value_vars=elmot3'ier eli gwah el data[['el3amod elawel eli 3awez a3melo ezaba',''el3amod eltany eli 3awez a3melo ezaba',''el3amod eltalet eli 3awez a3melo ezaba']],var_name='esm el3amod eli 7asl feh el ezaba',value_name='esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba')¶

TALET TARE2A eni fel value_vars hkteb esm el 3wamed eli 3awez a3melhom ezaba 3latol : fa 3amlt mot3'ier esmo revenue3 we 2olt bisawy melt y3ni ezaba lel mot3'ier revenue3 eli gwah el gdwal we fel id_vars 7atet el 3amod eli 3awez asbeto eli hwa hena campaign we fel value_vars 7atet asamy el3wamed eli 3awez a3melhom ezaba we fel var_name 7atet esm el3amod eli 7asl feh el ezaba eli hwa hena mslan ha5leh month we fel value_name 7atet esm el3amod eli gwah el values bta3 el3amod eli 7asl feh ezaba eli hwa hena mslan ha5leh Total¶

In [106]:
revenue3=pd.melt(revenue3,id_vars='campaign',value_vars=revenue3[['Classified Rev M0','Classified Rev M1','Classified Rev M2','Classified Rev M3','Classified Rev M4','Classified Rev M5','Classified Rev M6','Classified Rev M7','Classified Rev M8','Classified Rev M9','Classified Rev M10','Classified Rev M11','Classified Rev M12','Classified Rev M13','Classified Rev M14']],var_name='month',value_name='Total')
revenue3
Out[106]:
campaign month Total
0 BKD_DE_VM_2008_Akquise Classified Rev M0 99.50
1 BKD_DE_VM_2008_Akquise Classified Rev M0 29.75
2 BKD_DE_VM_2008_Akquise Classified Rev M0 57.51
3 BKD_DE_VM_2008_Akquise Classified Rev M0 138.00
4 BKD_DE_VM_2008_Akquise Classified Rev M0 18.00
... ... ... ...
20275 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20276 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 89.00
20277 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20278 TS_DE_VM_2009_Herbstchallenge Classified Rev M14 189.00
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland Classified Rev M14 89.00

20280 rows × 3 columns

str.replace(,) : de btestbdel 7aga adema be 7aga gdeda fa bta5od circle brackets gwaha¶

AWEL TARE2A eni 5alet 3amod el month eli fel mot3'ier revenue2 y3red bs el rakm bst5dam el function str.replace('','') : fa estbdelt klmet 'Classified Rev M' we 7atet bdlha fady¶

In [107]:
revenue2['month']=revenue2['month'].str.replace('Classified Rev M','')
revenue2.reset_index()
Out[107]:
index campaign month Total
0 0 BKD_DE_VM_2008_Akquise 0 99.50
1 1 BKD_DE_VM_2008_Akquise 0 29.75
2 2 BKD_DE_VM_2008_Akquise 0 57.51
3 3 BKD_DE_VM_2008_Akquise 0 138.00
4 4 BKD_DE_VM_2008_Akquise 0 18.00
... ... ... ... ...
20275 20275 TS_DE_VM_2009_Herbstchallenge 14 189.00
20276 20276 TS_DE_VM_2009_Herbstchallenge 14 89.00
20277 20277 TS_DE_VM_2009_Herbstchallenge 14 189.00
20278 20278 TS_DE_VM_2009_Herbstchallenge 14 189.00
20279 20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 14 89.00

20280 rows × 4 columns

str.split() : de btefsel 3n tare2 el 7aga eli gwa el akwas y3ni law 2olt str.split(' ') fa hifsel 3n tare2 el msafa we law 2olt str.split('/') hifsel 3n tare2 el 4arta el maila de we hakza¶

str.get() : de m3naha hatli rakm el index eli gwa el akwas y3ni law 2olt str.get(0) fa higebli awel index eli rakmo 0 we law 2olt str.get(1) higebli tany index eli rakmo 1 we hakza¶

str.split('').str.get() : de m3naha eno hifsel 3n tare2 el mwgod gwa el akwas bta3et split('') we hi3red eli rakm el index bta3o gwa el akwas bta3et get()¶

TANY TARE2A eni 5alet 3amod el month eli fel mot3'ier revenue3 y3red bs el rakm bst5dam el function str.split('M').str.get(1) : y3ni 2oltelo afsel mn awel 7arf el M l7ad el 2a5er fa fasl klmet 'Classified Rev M' 3n el rakm eli b3dha fa beltaly klmet 'Classified Rev M' b2a rakm el index bt3ha 0 wel rakm b2a rakm el index bta3o 1 fa 3radt eli rakm el index bta3o 1 fa 3ard el arkam bs¶

In [108]:
revenue3['month']=revenue3['month'].str.split('M').str.get(1)
revenue3.reset_index()
Out[108]:
index campaign month Total
0 0 BKD_DE_VM_2008_Akquise 0 99.50
1 1 BKD_DE_VM_2008_Akquise 0 29.75
2 2 BKD_DE_VM_2008_Akquise 0 57.51
3 3 BKD_DE_VM_2008_Akquise 0 138.00
4 4 BKD_DE_VM_2008_Akquise 0 18.00
... ... ... ... ...
20275 20275 TS_DE_VM_2009_Herbstchallenge 14 189.00
20276 20276 TS_DE_VM_2009_Herbstchallenge 14 89.00
20277 20277 TS_DE_VM_2009_Herbstchallenge 14 189.00
20278 20278 TS_DE_VM_2009_Herbstchallenge 14 189.00
20279 20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 14 89.00

20280 rows × 4 columns

ana hena est5demt el function info() 34an a3rf el data types bto3 el colums eli 3ndy fa la2et en 3amod el month 3obara 3n object y3ni nus fa lma agy artebo mesh hitrteb mzbot fa lazem a7welo le int64 34an yeb2a numeric fa ytrteb mzbot¶

In [109]:
revenue2.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20280 entries, 0 to 20279
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   campaign  20280 non-null  object 
 1   month     20280 non-null  object 
 2   Total     20280 non-null  float64
dtypes: float64(1), object(2)
memory usage: 475.4+ KB
In [110]:
revenue3.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20280 entries, 0 to 20279
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   campaign  20280 non-null  object 
 1   month     20280 non-null  object 
 2   Total     20280 non-null  float64
dtypes: float64(1), object(2)
memory usage: 475.4+ KB

astype('int64') : de function bst5demha 34an a7wel 3amod mo3ian le integer¶

astype('str') : de function bst5demha 34an a7wel 3amod mo3ian le string¶

In [111]:
revenue2['month']=revenue2['month'].astype('int64')
revenue2.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20280 entries, 0 to 20279
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   campaign  20280 non-null  object 
 1   month     20280 non-null  int64  
 2   Total     20280 non-null  float64
dtypes: float64(1), int64(1), object(1)
memory usage: 475.4+ KB
In [112]:
revenue3['month']=revenue3['month'].astype('int64')
revenue3.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20280 entries, 0 to 20279
Data columns (total 3 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   campaign  20280 non-null  object 
 1   month     20280 non-null  int64  
 2   Total     20280 non-null  float64
dtypes: float64(1), int64(1), object(1)
memory usage: 475.4+ KB

ana hena est5demt el function sort_values(by='month',ascending=False) 34an arteb 3amod el month tnazoli¶

In [113]:
revenue2.sort_values(by='month',ascending=False)
Out[113]:
campaign month Total
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 14 89.0
19381 TS_DE_VM_1907_Akquise_KW31 14 169.0
19373 TS_DE_VM_1907_Akquise_KW31 14 99.0
19374 TS_DE_VM_1907_Akquise_KW31 14 169.0
19375 TS_DE_VM_1907_Akquise_KW31 14 329.0
... ... ... ...
903 TS_DE_VM_2003_Sales Challenge 0 0.0
904 TS_DE_VM_2003_Sales Challenge 0 0.0
905 TS_DE_VM_2003_Sales Challenge 0 0.0
906 TS_DE_VM_2003_Sales Challenge 0 0.0
0 BKD_DE_VM_2008_Akquise 0 99.5

20280 rows × 3 columns

In [114]:
revenue3.sort_values(by='month',ascending=False)
Out[114]:
campaign month Total
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 14 89.0
19381 TS_DE_VM_1907_Akquise_KW31 14 169.0
19373 TS_DE_VM_1907_Akquise_KW31 14 99.0
19374 TS_DE_VM_1907_Akquise_KW31 14 169.0
19375 TS_DE_VM_1907_Akquise_KW31 14 329.0
... ... ... ...
903 TS_DE_VM_2003_Sales Challenge 0 0.0
904 TS_DE_VM_2003_Sales Challenge 0 0.0
905 TS_DE_VM_2003_Sales Challenge 0 0.0
906 TS_DE_VM_2003_Sales Challenge 0 0.0
0 BKD_DE_VM_2008_Akquise 0 99.5

20280 rows × 3 columns

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

AWEL TARE2A eni hst5dem el function groupby bel tare2a el 2ola ma3 el function sum() fa 3amlt mot3'ier esmo rev5 we 7atet gwah mgmo3 el arba7 fe kol 4ahr we d5lthom fe gdwal we samet el 3amod da 'Revenue by months' bst5dam el function reset_index(name='Revenue by months') we rtebthom tnazoli men 7es 3amod el Revenue by months¶

In [115]:
rev5=revenue3['Total'].groupby(revenue3['month']).sum().reset_index(name='Revenue by months').sort_values(by='Revenue by months',ascending=False)
rev5
Out[115]:
month Revenue by months
14 14 340596.86
11 11 334552.31
13 13 330266.13
12 12 324642.43
10 10 291919.12
9 9 281656.16
8 8 267809.64
7 7 258635.66
6 6 221678.37
5 5 171823.68
4 4 171134.49
3 3 147734.59
2 2 79158.26
1 1 58859.03
0 0 28920.15

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

TANY TARE2A eni hst5dem el function groupby bel tare2a el tanya ma3 el function sum() fa 3amlt mot3'ier esmo rev6 we 7atet gwah mgmo3 el arba7 fe kol 4ahr we d5lthom fe gdwal we samet el 3amod da 'Revenue by months' bst5dam el function reset_index(name='Revenue by months') we rtebthom tnazoli men 7es 3amod el Revenue by months¶

In [116]:
rev6=revenue2.groupby('month')['Total'].sum().reset_index(name='Revenue by months').sort_values(by='Revenue by months',ascending=False)
rev6
Out[116]:
month Revenue by months
14 14 340596.86
11 11 334552.31
13 13 330266.13
12 12 324642.43
10 10 291919.12
9 9 281656.16
8 8 267809.64
7 7 258635.66
6 6 221678.37
5 5 171823.68
4 4 171134.49
3 3 147734.59
2 2 79158.26
1 1 58859.03
0 0 28920.15

ana hrsem Line chart 34an a3ber 3n el arba7 bmror el zamn fa yeb2a m3aya line lel arba7 3la mdar el 4hor we fel x ha7ot 3amod el month eli feh el 4hor we fel y ha7ot el 3amod el gded eli feh mgmo3 el arba7 fe kol 4ahr¶

ana hena rasmt Line chart lel mot3'ier rev5 we 7atet fel x 3amod el "month" we 7atet fel y 3amod el "Revenue by months" we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "Total revenue by months" we 3amlt marker lel 5tot, fa hla2y en bmror el zamn el arba7 btzed y3ni mslan fel 4ahr ZERO el arba7 kanet 28920.15 we fel 4ahr 1 el arba7 kanet 58859.03 6 fel 4ahr 2 el arba7 kanet 79158.26 y3ni 3mala btzed kol 4ahr bs alet fe 4ahr 11 kanet 334552.31 we e fe 2a5er 4ahr eli hwa 4a4rel arba7 zadet b2et 340596.86¶

In [117]:
px.line(rev5,x='month',y='Revenue by months',width=1200,height=600,title='Total revenue by months',markers=True)

b3d keda 34an a3rf anhy 7amla e3lania to2ady ela ziadet el arba7 h3mel groupby ben el campaign wel total eli gwa el mot3'ier revenue2 aw revenue3 fa 3amlt mot3'ier gded esmo rev10 we 7atet gwah mgmo3 el arba7 le kol 7ma e3lania we 7atethom fe gdwal we samet el 3amod eli feh mgmo3 el arba7 "Revenue Summation for each campaign" bst5dam el function reset_index(name='Revenue Summation for each campaign') we rtebthom men 7es 3amod el "Revenue Summation for each campaign" tnazoli we 3radt awel 5¶

Grouping data¶

1- data['3amod rakmy'].groupby(data['3amod nusy']).esm el function¶

2- data.groupby('3amod nusy')['3amod rakmy'].esm el function¶

In [118]:
revenue2
Out[118]:
campaign month Total
0 BKD_DE_VM_2008_Akquise 0 99.50
1 BKD_DE_VM_2008_Akquise 0 29.75
2 BKD_DE_VM_2008_Akquise 0 57.51
3 BKD_DE_VM_2008_Akquise 0 138.00
4 BKD_DE_VM_2008_Akquise 0 18.00
... ... ... ...
20275 TS_DE_VM_2009_Herbstchallenge 14 189.00
20276 TS_DE_VM_2009_Herbstchallenge 14 89.00
20277 TS_DE_VM_2009_Herbstchallenge 14 189.00
20278 TS_DE_VM_2009_Herbstchallenge 14 189.00
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 14 89.00

20280 rows × 3 columns

In [119]:
revenue3
Out[119]:
campaign month Total
0 BKD_DE_VM_2008_Akquise 0 99.50
1 BKD_DE_VM_2008_Akquise 0 29.75
2 BKD_DE_VM_2008_Akquise 0 57.51
3 BKD_DE_VM_2008_Akquise 0 138.00
4 BKD_DE_VM_2008_Akquise 0 18.00
... ... ... ...
20275 TS_DE_VM_2009_Herbstchallenge 14 189.00
20276 TS_DE_VM_2009_Herbstchallenge 14 89.00
20277 TS_DE_VM_2009_Herbstchallenge 14 189.00
20278 TS_DE_VM_2009_Herbstchallenge 14 189.00
20279 TS_DE_VM_2010_Divide&Conquer_Rest Deutschland 14 89.00

20280 rows × 3 columns

In [120]:
rev10=revenue2.groupby('campaign')['Total'].sum().reset_index(name='Revenue Summation for each campaign').sort_values(by='Revenue Summation for each campaign',ascending=False).head(5)
rev10
Out[120]:
campaign Revenue Summation for each campaign
2 KAM_DE_VM_2003_Sales Challenge_Groups Akquise 487163.42
5 KAM_DE_VM_2003_Sales Challenge_Single Locations 437027.22
27 TS_DE_VM_1910_Sales Challenge 301415.83
9 KAM_DE_VM_2008_Vollgas mit AutoScout24 298269.15
28 TS_DE_VM_1910_Sales Challenge_TEST 255215.02
In [121]:
rev11=revenue3['Total'].groupby(revenue3['campaign']).sum().reset_index(name='Revenue Summation for each campaign').sort_values(by='Revenue Summation for each campaign',ascending=False).head(5)
rev11
Out[121]:
campaign Revenue Summation for each campaign
2 KAM_DE_VM_2003_Sales Challenge_Groups Akquise 487163.42
5 KAM_DE_VM_2003_Sales Challenge_Single Locations 437027.22
27 TS_DE_VM_1910_Sales Challenge 301415.83
9 KAM_DE_VM_2008_Vollgas mit AutoScout24 298269.15
28 TS_DE_VM_1910_Sales Challenge_TEST 255215.02

ana hena rasmt column bar chart lel mot3'ier rev11 we 7atet fel x el 3amod el nusy 'campaign' we 7atet fel y el 3amod el rakmy "Revenue Summation for each campaign" we 3amlt label lel columns 7agmo 0.2s we 5alet 3ard el chart 1200 we 5alet ertfa3 el chart 600 we 3amlt title lel chart esmo "The optimal campaigns for increasing customer size"¶

text_auto='' : da bi3mel label lel columns fa ana 3amlt label 7agmo .2s¶

title'' : da bi3mel title lel chart fa: ana hena 3amlt title lel chart we katbt feh Top 5 campaigns duo to revenue¶

width= : da bi3mel somk aw 3ard mo3ian lel bars fa ana 3amlt hena 3ard el bars 1200¶

height= : da bi3mel ertfa3 aw tol mo3ian lel bars fa ana 3amlt hena tol el bars 600¶

In [122]:
px.bar(rev11,x='campaign',y='Revenue Summation for each campaign',text_auto='.2s',width=1200,height=600,title='Top 5 campaigns duo to revenue')

MAZEN SABRY¶